2012-04-30 53 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 (™, ®)