c# - 如何更改字符串中的 1 个字符?

标签 c# .net string

我有这个代码:

string str = "valta is the best place in the World";

我需要替换第一个符号。当我尝试这个时:

str[0] = 'M';

我收到一个错误。我该怎么做?

最佳答案

字符串是不可变的,这意味着您无法更改字符。相反,您创建新的字符串。

您所要求的可以通过多种方式完成。最合适的解决方案将根据您对原始字符串所做更改的性质而有所不同。你只改变一个角色吗?是否需要插入/删除/追加?

这里有几种方法可以从现有字符串创建新字符串,但首字符不同:

str = 'M' + str.Remove(0, 1);

str = 'M' + str.Substring(1);

上面,新字符串被分配给原始变量str

我想补充一点,其他演示 StringBuilder 的答案也非常合适。我不会实例化 StringBuilder 来更改一个字符,但如果需要进行多次更改,StringBuilder 是比我在过程中创建临时新字符串的示例更好的解决方案。 StringBuilder 提供了一个允许许多更改和/或追加操作的可变对象。完成更改后,将使用 .ToString() 方法从 StringBuilder 创建一个不可变字符串。您可以继续对 StringBuilder 对象进行更改,并根据需要使用 .ToString() 创建更多新字符串。

关于c# - 如何更改字符串中的 1 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8987141/

相关文章:

string - 我的排列代码每次都打印 nPn 吗?

string - 聚类(尤其是字符串聚类)如何工作?

java - 如何使用listview.GetItemAtPosition(e.Position)获取用户点击的ListView项的数据?

c# - 不使用 Code First 时良好的通用存储库模式

c# - 如何使用 lambda 表达式选择多列过滤器

c# - 如何在 Action 中传递参数?

c# - Linq OrderBy int 属性不起作用

c# - 为什么我无法捕获返回类型为 void 的异步函数中的异常?

c# - ASP Repeater获取多个选定行的值

java - 检查字符串是否包含另一个整个字符串