Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何替换C中的字符#_C# - Fatal编程技术网

C# 如何替换C中的字符#

C# 如何替换C中的字符#,c#,C#,我有这样的字符串: var abc = "text1 text2 text3"; 我想将字符串中的“text3”改为“textabc”。有没有一种方法可以在不创建新字符串的情况下执行此操作?字符串在C中是不可变的,因此任何操作都会固有地创建一个新字符串 字符串是不可变的——字符串的内容 无法更改字符串对象 创建对象后,尽管 语法使它看起来好像您 我能做到这一点 由于这一事实,通常是对“字符串”执行操作的最有效方法。特别是如果您一次连接一个字符,例如 请参阅该方法-这不需要将结果重新分配给另一

我有这样的字符串:

var abc = "text1 text2 text3";
我想将字符串中的“text3”改为“textabc”。有没有一种方法可以在不创建新字符串的情况下执行此操作?

字符串在C中是不可变的,因此任何操作都会固有地创建一个新字符串

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

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

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

请看一看非常著名的(你将重新注册他:)关于明智地使用StringBuilder的所有内容。

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

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

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

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

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

请看一看非常著名的(您将重新注册他:)关于明智地使用StringBuilder的所有内容

string newString = abc.Replace("text3", "textabc");
字符串在CLR中是不可变的:您永远无法更改它们


字符串在CLR中是不可变的:您永远无法更改它们。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

你为什么要这样做???@Akram-我不认为这是一个特别模糊的要求?你为什么这么认为?@El Ronnoco:我想知道OP真正需要什么……看看你所说的“创建新字符串”是什么意思,你为什么认为你需要避免它?你为什么要这样做???@Akram-我不认为这是一个特别模糊的要求?你为什么这么认为?@El Ronnoco:我想知道OP真正需要什么……看看你所说的“创建一个新字符串”是什么意思,你为什么认为你需要避免它?我相信这仍然会为两个字符串分配内存(即
abc
pre-OP和
abc
post-OP)根据我的回答中Skeety文章中的示例,我相信这仍然为两个字符串(即
abc
pre-op和
abc
post-op)分配内存,正如我的回答中Skeety文章中的示例answer@Homam谢谢:)我想OP只是在问如何将结果重新分配回原始变量名。。。哦,是的,就是这样,从问题的层面上,我知道OP想要什么。感谢文章的链接和作者:P.@Homam谢谢:)我想OP只是在问如何将结果重新分配回原始变量名。。。哦,是的,就是这样,从问题的层面上,我知道OP想要什么。感谢文章的链接和作者:P。