13

我有如下字符串

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

4 回答 4

39

为什么它会删除 0 后的所有 3 个逗号?

因为这就是它记录要做的事情:

返回值:从当前字符串的末尾删除参数中
所有出现的字符后剩余的字符串。trimChars

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

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

或等效地:

if (str.EndsWith(","))
{
    str = str.Remove(str.Length - 1);
}
于 2013-07-06T11:15:29.423 回答
5

这是意料之中的。String.TrimEnd从当前 String 对象中删除数组中指定的一组字符的所有尾随出现

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

改用这个:

str = str.EndsWith(",") ? str.Substring(0, str.Length - 1) : str;
于 2013-07-06T11:16:23.957 回答
2

你可以使用这个:

string s = "2,44,AAA,BBB,1,0,,,";
s = s.Remove(s.Length-1, 1);
于 2013-07-06T11:22:38.260 回答
2

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

str = str.TrimEnd(',')
于 2018-05-01T10:06:44.893 回答