2012-04-30 50 views
0

基本上我們的問題是: 我們不能代替這樣的字符串:10003 * 但是我們可以更換一個像這樣的字符串:10003C#與string.replace不起作用

我們想要替換看起來像這樣一個字符串的一部分:10003 * 這是我們的代碼:

string text = sr2.ReadToEnd(); 
sr2.Close(); 
while (loop != lstTxt.Items.Count) 
{ 
    string SelectedItem = lstTxt.SelectedItem.ToString() + "*"; 

    text = text.Replace(SelectedItem, "tietze111"); 


    if (lstTxt.SelectedIndex < lstTxt.Items.Count - 1) 
     lstTxt.SelectedIndex++; 
    loop++; 

} 

sw2.Write(text); 

但它不工作。當我們忽略要替換的部分中的*時,它會起作用。但我們也必須替換*。你知道我們必須改變嗎?

它的工作原理,當我們使用此:

string text = sr2.ReadToEnd(); 
sr2.Close(); 
while (loop != lstTxt.Items.Count) 
{ 
    string SelectedItem = lstTxt.SelectedItem.ToString(); // changed 

    text = text.Replace(SelectedItem, "tietze111"); 


    if (lstTxt.SelectedIndex < lstTxt.Items.Count - 1) 
     lstTxt.SelectedIndex++; 
    loop++; 

} 

sw2.Write(text); 

- 使用(VAR SR2 =新的StreamReader(Application.StartupPath + @ 「\網站\德勒22 ET.htm」,Encoding.Default)) {

   using (var sw2 = new StreamWriter(tempFile, true, Encoding.Default)) 

,因爲該文件仍處於ASCII我們用這個。也許這就是問題所在。 我們如何解決這個問題?

+0

System.String是一個Unicode字符序列,所以當你讀取文件時,它被轉換爲Unicode。調試並設置一個斷點,檢查它的值是什麼。也許將其解碼爲字節數組,然後查看數據或替換鍵是否不是您認爲的...('*'是以ASCII編碼定義的字符。) – erikH

+0

你有沒有得到這個工作? – bigamil

回答

0

修復以下行,

string SelectedItem = lstTxt.SelectedItem.Value; 

你正在服用的項目,而不是價值。

+0

基本上我們的問題是: - 我們不能取代像這樣的字符串:10003 * - 但我們可以替換一個像這樣的字符串:10003 –

+0

它可能是編碼問題嗎?您可能會混合使用UTF-8和ASCII字符。 –

+0

也許是,我們該如何解決? –

0

你試過了嗎?

"[\*]" 

或者

@"[*]" 
+0

不知道這是否會工作..只是我在網上找到的東西 – dright

+0

沒有工作:(。 –

0

String.Replace(String,String)方法不會做任何特殊的任何字符。你試圖替換的id中有一個字符與你試圖匹配的字符不一樣。我會嘗試將數據源中的astrisk複製到您的代碼中,並查看問題是否仍然存在。

+0

沒有工作:(。 –

+1

你有沒有在你的代碼中設置斷點來看看實際存儲在'文本'在嘗試替換之前? –

0

您的問題*以其他類型編碼。星號U + 002A

的Unicode值你可以試試這個。注意Char.MinValue在技術上是一個空值,因爲你不能有一個空白的Char。

你的情況:lstTxt.SelectedItem.ToString() + '\u002A'.ToString();

如果不行嘗試刪除(使用不同的編碼值*),以確保您其實可以在字符串中找到它。

SomeString.Replace('\u002A', Char.MinValue); 

OR

SomeString.Replace('\u002A'.ToString(), String.Empty); 

我以前碰到了這樣的問題,它最終是一個試錯之類的話,直到你得到它的權利。類似的問題,我去年夏天C# String.Replace not finding/replacing Symbol (™, ®)