为什么string.TrimEnd不删除字符串中的最后一个字符

时间:2013-07-06 11:12:53

标签: c# string trim

我的字符串如下

2,44,AAA,BBB,1,0,,,

所以现在我想删除上面字符串中的最后一个逗号。所以我希望输出为

2,44,AAA,BBB,1,0,,

我决定使用下面的TrimeEnd

str.ToString.TrimEnd(',')

但它在0之后删除了所有逗号。所以我得到如下输出

2,44,AAA,BBB,1,0

为什么在0之后删除所有3个逗号?我只需要删除字符串

中的最后一个字符

4 个答案:

答案 0 :(得分:34)

  

为什么在0之后删除所有3个逗号?

因为这是documented要做的事情:

  

返回值
  在trimChars参数中出现所有字符后保留的字符串将从当前字符串的末尾删除。

如果您只想删除最终字符,可以使用:

if (str.EndsWith(","))
{
    str = str.Substring(0, str.Length - 1);
}

或等效地:

if (str.EndsWith(","))
{
    str = str.Remove(str.Length - 1);
}

答案 1 :(得分:4)

这是预期的。 String.TrimEnd从当前String对象中删除数组中指定的一组字符的所有尾随事件

TrimEnd(char[] trimChars)方法从当前字符串中删除trimChars参数中的所有尾随字符。 当字符串末尾遇到trimChars以外的第一个字符时,修剪操作停止

请改用:

str = str.EndsWith(",") ? str.Substring(0, str.Length - 1) : str;

答案 2 :(得分:1)

您可以使用:

string s = "2,44,AAA,BBB,1,0,,,";
s = s.Remove(s.Length-1, 1);

答案 3 :(得分:1)

请记住,TrimEnd()不是一个就地功能。您应该将其结果重新分配给str

str = str.TrimEnd(',')