.net 字符串,在运行时替换而不是替换字符串

xqnpmsa8  于 2023-08-08  发布在  .NET
关注(0)|答案(5)|浏览(110)

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

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

}

dsekswqp

dsekswqp1#

变更

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

字符串

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


string.Replace不会改变原始字符串,但会将改变后的字符串作为返回值返回。

yqkkidmi

yqkkidmi2#

string1 = string1.Replace(...);

字符串
从文档:String.Replace返回**一个新字符串,其中当前示例中所有出现的指定字符串都被另一个指定字符串替换。

icomxhvb

icomxhvb3#

字符串是不可变的,所以如果你在一个字符串对象中改变,一个新的对象被创建,所以你需要有新创建的字符串的引用。
所以

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

字符串
就能解决问题

kdfy810k

kdfy810k4#

参考此MSDN Documentation
正如其他人所说,您需要使用replace操作的返回值。

bmp9r5qi

bmp9r5qi5#

实际上,您通过获取“Replace”的值来解决它。
我在做以下事情:

string code = "A123BCD";
code.Replace("123", "R");

字符串
并期望有“ARBCD”,但它给了我最初的结果。
但必须做到:

code = code.Replace("123", "R");


一切都很好

相关问题