如何在C#中替换字符?

时间:2011-06-16 08:57:14

标签: c#

我有这样的字符串:

var abc = "text1 text2 text3";

我想在字符串中将“text3”更改为“textabc”。有没有办法可以在不创建新字符串的情况下完成此操作?

4 个答案:

答案 0 :(得分:3)

字符串在C#中是不可变的,因此任何操作本身都会创建一个新的字符串...

From MSDN

  

字符串是不可变的 - 内容   字符串对象无法更改   但是,在创建对象之后   语法使它看起来像你   可以做到这一点。

由于这个事实,

StringBuilders通常是对“字符串”执行操作的最有效方式。特别是如果你一次连接一个字符串。

请参阅StringBuilder.Replace()方法 - 这不需要您将结果重新分配给另一个StringBuilder,因为它实际上更改了StringBuilder本身

看看this article非常着名的Jon Skeet(你会认识他:))所有关于合理使用StringBuilder的事。

答案 1 :(得分:1)

string newString = abc.Replace("text3", "textabc");

字符串在CLR中是不可变的:你永远不能改变它们。

答案 2 :(得分:1)

主要问题是写“不创建新字符串”是什么意思。

如上所述,字符串在.NET中是不可变的,也就是说,一旦创建它们,它们就无法改变。

但是,您可以使用新的字符串实例替换它们:

var abc = "text1 text2 text3";  
abc = abc.Replace("text3", "textabc");

如果您想要更多灵活性,可能需要使用StringBuilder,您可以根据需要删除和替换字符串,最后使用其ToString方法将结果作为字符串实例。

答案 3 :(得分:1)

不,因为字符串是不可变的,但您可以将新字符串重新分配给同一个变量

var abc = "text1 text2 text3"
abc = abc.Replace("text3", "textabc");