-1

基本上我们的问题是:我们不能替换这样的字符串: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 = new StreamReader(Application.StartupPath + @"\website\Dehler 22 ET.htm", Encoding.Default)) {

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

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

4

4 回答 4

0

Have you tried?

"[\*]"

Or

@"[*]" 
于 2012-04-30T19:41:00.297 回答
0

修复以下行,

string SelectedItem = lstTxt.SelectedItem.Value;

你拿的是物品而不是价值。

于 2012-04-30T19:31:57.627 回答
0

您的问题 * 以其他类型编码。星号 U+002A 的 Unicode 值

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

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

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

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

或者

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

我以前遇到过这样的问题,直到你做对为止,它最终都是一种反复试验的事情。我去年夏天遇到的类似问题C# String.Replace 没有找到/替换 Symbol (™, ®)

于 2012-04-30T20:42:10.917 回答
0

String.Replace(String,String)方法不会对任何字符做任何特殊的事情。您尝试替换的 id 中有一个字符与您尝试匹配的字符不同。我会尝试将星号从数据源复制到您的代码中,看看问题是否仍然存在。

于 2012-04-30T19:45:02.863 回答