C#与string.replace不起作用(C# string.Replace doesn'

2019-09-16 21:52发布

基本上,我们的问题是:我们不能代替这样的字符串: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);

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

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

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

Answer 1:

修正以下行,

string SelectedItem = lstTxt.SelectedItem.Value;

你正在服用的项目,而不是价值。



Answer 2:

你有没有尝试过?

"[\*]"

要么

@"[*]" 


Answer 3:

String.Replace(String,String)方法不会做任何特殊的任何字符。 有一个在你的ID的角色,你是试图取代是不一样的,你要匹配的一个。 我会尝试复制从数据源中的astrisk到你的代码,看看问题是否仍然存在。



Answer 4:

您的问题*在一些其他类型的编码。 对于星号U + 002A的Unicode值

你可以试试这个。 注意Char.MinValue在技术上是一个空值,因为你不能有空白字符。

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

如果不起作用尝试删除(使用不同的编码值*),以确保您其实可以在字符串中找到它。

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

要么

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

我以前就遇到了这样的问题,它最终是一个试错之类的话,直到你得到它的权利。 类似的问题,我在去年夏天C#不与string.replace查找/替换符号(™,®)



文章来源: C# string.Replace doesn't work