String的替换方法不会更改String

时间:2012-02-02 03:53:53

标签: c# string immutability

我尝试将包含“TEMPDOCUMENTLIBRARY”的文件名替换为“SHAREDDOCS” docs(Typed Dataset)。但不知何故,它根本不会取而代之。 怎么了?

for (int index = 0; index < docs.Document.Rows.Count; index++)
{
    if (docs.Document[index].FileName.Contains("TEMPDOCUMENTLIBRARY"))
    {
         docs.Document[index].BeginEdit();
         docs.Document[index].FileName.Replace("TEMPDOCUMENTLIBRARY", "SHAREDDOCS");
         docs.Document[index].EndEdit();
    }
}

2 个答案:

答案 0 :(得分:4)

字符串是不可变的(意味着给定字符串的值永远不会改变)。像SubstringReplace这样的函数会返回 new 字符串,这些字符串表示执行了所需操作的原始字符串。

为了达到你想要的效果,你需要这个:

docs.Document[index].FileName = 
      docs.Document[index].FileName.Replace("TEMPDOCUMENTLIBRARY", "SHAREDDOCS");

答案 1 :(得分:2)

String.Replace无法替换。尝试:

docs.Document[index].FileName = docs.Document[index].FileName.Replace("TEMPDOCUMENTLIBRARY", "SHAREDDOCS");

请注意文档(上面链接),它返回替换的结果。