【问题标题】:Replacing string in a list doesn't work [duplicate]替换列表中的字符串不起作用[重复]
【发布时间】:2013-09-14 12:35:58
【问题描述】:

我一辈子都无法理解为什么当我尝试替换字符串类型列表中元素的文本时,Replace(); 方法不起作用。这个问题在一定程度上与我的前一个线程有关[在这里找到:Merging two files and handling duplicate entries(查看完整代码也是一个好主意)],但归根结底,这一切都归结为命令不起作用,而我的代码实际上是正确的(!)。

我会给你一个例子,说明在我的情况下什么不起作用。以最基本的形式为例,这是我想要完成的,但它不起作用(真的!):

[在我的原始代码中,我已经三次检查(带有断点和所有内容)我的列表确实包含我想要替换的字符串(我正在替换元素本身!),但它不会做它!说真的,目前它是一个 4 元素列表(虽然可以添加更多元素,请参阅其他线程)。]

最后一件事,对标点符号表示抱歉(我知道感叹号太多),但我实际上对此感到愤怒。下面的代码(记住,最基本的形式,但我试过一个例子):

// List[index].Replace(oldValue, newValue);
newFile[3].Replace(newFile[3], "Replace it with this!");

你能帮我解决这个问题吗?

【问题讨论】:

    标签: c# string list replace str-replace


    【解决方案1】:
    newFile[3] = newFile[3].Replace(newFile[3], "Replace it with this!");
    

    在 c# 中,字符串是不可变的。因此,Replace 方法返回一个新字符串。

    编辑: 字符串不可变的主要原因是使它们成为线程安全的。 如果您想了解更多信息,请阅读:Why .NET String is immutable?

    【讨论】:

    • 此代码转换为newFile[3] = "Replace it with this!"。如果要替换整个元素,为什么需要Replace?
    • 你得问问 Jim Iliadis 哈哈。我认为这只是为了举例,他的实际代码可能不会这样做。
    【解决方案2】:
    newFile[3] = newFile[3].Replace(newFile[3], "Replace it with this!");
    

    【讨论】:

      猜你喜欢
      • 2018-08-26
      • 1970-01-01
      • 2011-09-07
      • 2017-07-25
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      相关资源
      最近更新 更多