如何在 C# 中替换字符

本文关键字:替换 字符 | 更新日期: 2023-09-27 17:59:21

我有这样的字符串:

var abc = "text1 text2 text3";

我想将字符串中的"text3"更改为"textabc"。有没有办法可以在不创建新字符串的情况下做到这一点?

如何在 C# 中替换字符

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

来自 MSDN

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

由于这一事实,StringBuilders通常是对"字符串"执行操作的最有效方法。特别是如果您一次连接一个字符,例如。

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

看看非常著名的Jon Skeet的这篇文章(你会重新认识他:((都是关于明智地使用StringBuilder的。

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

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

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

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

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

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

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

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