如何使用c#替换字符串的最后一个字符?

use*_*853 25 c#

string str = "Student_123_";
Run Code Online (Sandbox Code Playgroud)

我需要用","替换最后一个字符"_".我是这样做的.

str.Remove(str.Length -1, 1);
str = str + ",";
Run Code Online (Sandbox Code Playgroud)

但是,是否有可能更有效地实现它.可能是一行代码.?? 顺便说一下,最后一个字符可以是任何字符.所以替换不会在这里工作.

orl*_*rlp 55

没有.

在C#中,字符串是不可变的,因此您无法在"就地"更改字符串.您必须首先删除字符串的一部分,然后创建一个新字符串.实际上,这也意味着你的原始代码是错误的,因为str.Remove(str.Length -1, 1);根本不改变str,它返回一个新的字符串!这应该做:

str = str.Remove(str.Length -1, 1) + ",";
Run Code Online (Sandbox Code Playgroud)


B H*_*B H 17

C#.NET让它变得非常简单.

str = str.TrimEnd('_')
Run Code Online (Sandbox Code Playgroud)

  • @Ohad Schneider:不正确 - 任何数量的指定字符都将被修剪掉 * 或 * 结尾。但我注意到我没有回答 OP 的问题,因为我没有看到他试图添加的逗号。因此,我将我的答案编辑为: str = str.Trim('_') + ","; (3认同)
  • `TrimEnd` 只会删除*尾随*字符:http://msdn.microsoft.com/en-us/library/system.string.trimend(v=vs.110).aspx (3认同)
  • 应该注意的是,这仅在字符串末尾有*单个*下划线时才有效,因为`TrimEnd`将删除**所有**出现的指定字符。 (2认同)

Jon*_*ood 7

这是使用的限制string.StringBuilder如果您需要进行大量此类更改,则可以使用.但是,对于您需要的简单任务而言,这是不值得的.

str = str.Substring(0, str.Length - 1) + ",";
Run Code Online (Sandbox Code Playgroud)


bbo*_*sak 5

使用 StringBuilder 类

StringBuilder mbuilder = new StringBuilder("Student_123_");
mbuilder[mbuilder.Length-1] = ',';
Console.WriteLine(mbuilder.ToString());
Run Code Online (Sandbox Code Playgroud)


Rya*_*ams 5

优雅但不是很有效率.用逗号替换str末尾的任何字符.

str = Regex.Replace(str, ".$", ",");
Run Code Online (Sandbox Code Playgroud)