C#string.Replace不起作用

时间:2012-04-30 19:29:01

标签: c# string replace

基本上我们的问题是: 我们不能替换这样的字符串:10003 * 但是我们可以替换这样的字符串:10003

我们想要替换看起来像这样的字符串的一部分: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);

-     using(var sr2 = new StreamReader(Application.StartupPath + @“\ website \ Dehler 22 ET.htm”,Encoding.Default))                 {

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

我们正在使用此文件,因为该文件仍为ASCII格式。也许这就是问题所在。 我们如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

修正以下行

string SelectedItem = lstTxt.SelectedItem.Value;

您正在接受该项而非价值。

答案 1 :(得分:0)

你试过吗?

"[\*]"

或者

@"[*]" 

答案 2 :(得分:0)

String.Replace(String,String)方法对任何字符都不起作用。您尝试替换的ID中有一个字符与您要匹配的字符不同。我会尝试将数据源中的astrisk复制到您的代码中,看看问题是否仍然存在。

答案 3 :(得分: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 (™, ®)