以下代码中的以下行不会产生任何影响:
string1.Replace(string1.Substring(firstchar, lastchar - firstchar), "##");
string1
保持不变,并且在使用IndexOf时返回相同的索引。
while (firstchar != string1.LastIndexOf("test"))
{
firstchar = string1.IndexOf("test");
lastchar = string1.IndexOf(" ");
using (StreamWriter writer = new StreamWriter("C:\\textfile1.txt"))
{
writer.WriteLine(string1.Substring(firstchar, lastchar - firstchar));
writer.WriteLine();
writer.Dispose();
}
string1.Replace(string1.Substring(firstchar, lastchar - firstchar), "##");
}
答案 0 :(得分:11)
更改
string1.Replace(string1.Substring(firstchar, lastchar - firstchar), "##");
到
string1 = string1.Replace(string1.Substring(firstchar, lastchar - firstchar), "##");
string.Replace
不会改变原始字符串,但会返回更改后的字符串作为返回值。
答案 1 :(得分:7)
string1 = string1.Replace(...);
来自文档:
String.Replace
返回 一个新字符串,其中当前实例中所有出现的指定字符串都替换为另一个指定的字符串。 < / p>
答案 2 :(得分:2)
字符串是不可变的,因此如果更改字符串对象,则会创建一个新对象,因此您需要引用新创建的字符串。
所以
string1 = string1.Replace(string1.Substring(firstchar, lastchar - firstchar), "##");
将解决问题
答案 3 :(得分:0)
正如其他人所说,你需要使用replace
操作的返回值。