基本上我们的问题是: 我们不能替换这样的字符串: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格式。也许这就是问题所在。 我们如何解决这个问题?
答案 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 (™, ®)