从字符串末尾删除空格的最佳方法

3

在寻求答案时,解释你所需要的内容总是一个好主意。"最佳方法"通常取决于你的主要关注点(可读性、速度、资源使用等),但必须承认TrimEnd()应该涵盖了大部分情况。 - 4444
5个回答

17
你可以使用 Trim(),或者如果你只想应用于结尾,可以使用 TrimEnd()
string s = "test                      ";

s = s.Trim();
s = s.TrimEnd();

2

1

String.TrimEnd 是答案 - 只从字符串末尾修剪选定的字符。

注意:您应该注意MSDN文档:此方法的行为发生了重大变化,因此实际行为取决于您所针对的.NET Framework版本:

注意事项: .NET Framework 3.5 SP1及更早版本会维护一个内部的空白字符列表,如果trimCharsnull或空数组,则此方法将修剪该列表中的空白字符。从.NET Framework 4开始,如果trimChars为null或空数组,则该方法将修剪所有Unicode空格字符(即,当它们被传递给Char.IsWhiteSpace方法时产生true返回值的字符)。由于这个变化,.NET Framework 3.5 SP1及更早版本中的Trim()方法会删除两个字符:零宽度空格(U+200B)和零宽度不间断空格(U+FEFF),而.NET Framework 4及更高版本中的Trim()方法则不会删除这些字符。此外,.NET Framework 3.5 SP1及更早版本中的Trim()方法不会修剪三个Unicode空格字符:蒙古语元音分隔符(U+180E)、窄不间断空格(U+202F)和中等数学空格(U+205F)。

@downvoter,您是否愿意发表评论?您是否提到了OP的句子“但是我只需要从末尾删除它们”? - Ondrej Tucny

1

您可以直接使用s.TrimEnd(' ');

如果省略参数,它将删除所有的Unicode空格字符(这可能是您想要实现的,也可能不是)。


请注意,以这种方式调用将创建一个必须进行垃圾回收的 char[] - springy76
@springy76:是的,但无论如何都必须进行分配(字符串是不可变的),因此我在这里没有看到一个“大”问题。如果性能微优化真的非常重要(比如说,代码在紧密循环内部),应该首先考虑用 StringBuilder 替换 string。 - Vlad

0
Strings.RTrim("string")

文档

"string".TrimEnd()

docs


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接