如何在 C# 中替换字符
本文关键字:替换 字符 | 更新日期: 2023-09-27 17:59:21
我有这样的字符串:
var abc = "text1 text2 text3";
我想将字符串中的"text3"更改为"textabc"。有没有办法可以在不创建新字符串的情况下做到这一点?
字符串在 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
方法将结果作为字符串实例。