2014-04-17 27 views
0

我有一個文本文件,該文件有鏈接列表如下:從一個文本文件讀取文件並編輯編程每一行,並輸出它在另一個txt文件

<A title=Accept href="https://www.google.com/url?q=https%3A%2F%2Fregister.eragenx.com%2Freferral%3Freferrer%3Demail%26invitationToken%3D1f7ae07e4cb1ed96a7fc5f6de10376d9%26email%3Dlovessoumi.tra123456789soumit90%2540gmail.com&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGdIeh6LFs4H5TvysbSV7DjUk2Tuw" target=_blank>Sign Up Now For Free.</A> 

與我的程序和按鈕點擊的事件我想編輯文件的每一行如:

https://register.eragenx.com/referral?referrer=email&invitationToken=fd78d9fdf6281e033b389cb14e118f85&email=lovesleeping1234567.8sleepin.g97%40gmail.com 

這就是我想要的,但它似乎工作,我做錯了什麼?

public void editline() 
     { 


      string[] lines = File.ReadAllLines("link.txt"); 

      foreach (var line in lines) 
      { 
       line.Substring(51,171); 
       line.Replace("%3A", ":"); 
       line.Replace("%2F","/"); 
       line.Replace("%3F","?"); 
       line.Replace("%3D" , "="); 
       line.Replace("%26","&"); 

      } 

      File.WriteAllLines("output.txt",lines); 




     } 

我也試過這樣:

public void editline() 
     { 



      string[] lines = File.ReadAllLines("link.txt"); 



      foreach (var line in lines) 
      { 

       HttpUtility.UrlDecode(line.Substring(51, 171)); 


      } 


      File.WriteAllLines("output.txt", lines); 
} 

這:

public void editline() 
     { 


      string parsedLine = null; 
      string[] lines = File.ReadAllLines("link.txt"); 



      foreach (var line in lines) 
      { 


       parsedLine = line.Substring(51, 171); 
       parsedLine = line.Replace("%3A", ":"); 
       parsedLine = line.Replace("%2F", "/"); 
       parsedLine = line.Replace("%3F", "?"); 
       parsedLine = line.Replace("%3D", "="); 
       parsedLine = line.Replace("%26", "&"); 

      } 


      File.WriteAllLines("output.txt", lines); 
} 

但產量與從link.txt方法是使輸出沒有變化的聯繫.txt

請幫忙

+0

我已編輯您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

根本不重複 – sauk

+1

@ user2889827,請閱讀該問題的答案。就像那個問題的OP一樣,你錯誤地認爲'Replace'突變了狀態。 –

回答

3

原因line沒有改變是因爲你沒有存儲的substringreplace函數的結果。

應該是這樣的:

string parsedLine= null; 

foreach (var line in lines) 
{ 
    parsedLine = line.Substring(51,171); 
    parsedLine = parsedLine.Replace("%3A", ":"); 
    parsedLine = ... 
} 

//use parsedLine here... 
+0

謝謝,讓我試試看:) – sauk

+0

我不能像那樣在foreach循環中指定 – sauk

+0

啊,是的......你需要一個新的var ...我會改變 –

0
public void editline() 
    { 
     string[] lines = File.ReadAllLines("link.txt"); 

     foreach (var line in lines) 
     { 
      line = line.Substring(51,171); 
      line = line.Replace("%3A", ":"); 
      line = line.Replace("%2F","/"); 
      line = line.Replace("%3F","?"); 
      line = line.Replace("%3D" , "="); 
      line = line.Replace("%26","&"); 

     } 

     File.WriteAllLines("output.txt",lines); 
    } 

看那替代方法。它返回修改後的字符串,它不會修改您傳入的字符串。

+1

您應該解釋問題代碼中的問題,您更改的內容以及該更改如何解決問題。 – Servy

+0

謝謝,但這是行不通的,不能在foreach循環中分配這樣的行。 – sauk

相關問題