String.Replace在运行时不替换字符串

时间:2010-12-02 09:25:22

标签: c# .net string

以下代码中的以下行不会产生任何影响:

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), "##");

}

4 个答案:

答案 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)

请参阅此MSDN Documentation

正如其他人所说,你需要使用replace操作的返回值。