对于我的生活,我不能理解当我尝试替换String类型列表中的元素文本时Replace();
方法不起作用的原因。这个问题在某种程度上与我之前的一个帖子有关[在这里找到:Merging two files and handling duplicate entries(对于完整的代码来说,查看它也是一个好主意)],但是在结束时一天,这一切归结为这个命令不起作用的事实,我的代码实际上是正确的(!)。
我会举一个例子说明在我的情况下什么不起作用。在最基本的形式中,为了举例,这是我想要完成但它不起作用(真实!):
[在我的原始代码中,我已经三次检查(使用断点和所有内容)我的列表确实包含我要替换的字符串(我正在替换元素本身!),但它不会这样做它!严肃地说,现在它是一个4元素列表(尽管可以添加更多元素,参考其他线程)。]
最后一件事,对标点符号感到遗憾(我知道的感叹号太多了),但我实际上是在为此而咆哮。下面的代码(记住,最基本的形式,但我试过的一个例子):
// List[index].Replace(oldValue, newValue);
newFile[3].Replace(newFile[3], "Replace it with this!");
你能帮我解决这个问题吗?
答案 0 :(得分:10)
newFile[3] = newFile[3].Replace(newFile[3], "Replace it with this!");
在c#中,字符串是不可变的。因此,Replace方法返回一个新字符串。
修改强>: 字符串不可变的主要原因是使它们成为线程安全的。 如果您想了解更多信息,请阅读:Why .NET String is immutable?
答案 1 :(得分:2)
newFile[3] = newFile[3].Replace(newFile[3], "Replace it with this!");