开发者

String.Replace not replacing the string during runtime

开发者 https://www.devze.com 2023-01-28 17:24 出处:网络
The following line in the below code 开发者_运维技巧doesn\'t cause any effect: string1.Replace(string1.Substring(firstchar, lastchar - firstchar), \"##\");

The following line in the below code 开发者_运维技巧doesn't cause any effect:

string1.Replace(string1.Substring(firstchar, lastchar - firstchar), "##");

string1 remains unchanged and I get the same index returned when using 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), "##");

}


Change

string1.Replace(string1.Substring(firstchar, lastchar - firstchar), "##");

to

string1 = string1.Replace(string1.Substring(firstchar, lastchar - firstchar), "##");

string.Replace does not alter the original string, but returns the altered string as it's return value.


string1 = string1.Replace(...);

From the docs: String.Replace returns a new string in which all occurrences of a specified string in the current instance are replaced with another specified string.


Strings are immutatble so if you change in a string object , a new object is created so you need to have the reference of the newly created string.

so

string1 = string1.Replace(string1.Substring(firstchar, lastchar - firstchar), "##"); 

will solve the issue


Refer to this MSDN Documentation

Just as others said, you need to use the return value from the replace operation.

0

精彩评论

暂无评论...
验证码 换一张
取 消