【问题标题】:Best method for removing white spaces from the end of a string [duplicate]从字符串末尾删除空格的最佳方法[重复]
【发布时间】:2012-08-24 00:33:55
【问题描述】:

可能重复:
How automatically remove all white spaces start or end in a string

我有许多字符串需要从中修剪空格,但我只需要从末尾删除它们。它们用于公司和个人名称,因此字符串中间可以有空格。

【问题讨论】:

  • 在答案中解释您要查找的内容总是一个好主意。 “最佳方法”通常取决于您的主要关注点(可读性、速度、资源使用情况等)——但无可否认,TrimEnd() 应该涵盖其中的大部分。

标签: c# string


【解决方案1】:

你可以只使用Trim(),或者如果你只想申请结束TrimEnd()

string s = "test                      ";

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

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      你可以使用s.TrimEnd(' ');

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

      【讨论】:

      • 请注意,每次以这种方式调用都会创建一个char[],它必须被垃圾回收。
      • @springy76: 是的,但无论如何你必须有一个分配(字符串是不可变的),所以我在这里看不到 big 问题。如果性能微优化真的那么重要(例如,代码在一个紧密的循环中),那么应该首先将string 替换为StringBuilder
      【解决方案4】:

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

      注意:您应该注意MSDN中的文档:此方法的行为有一个重大更改,因此实际行为取决于版本您的目标是 .NET Framework:

      来电者须知
      .NET Framework 3.5 SP1 及更早版本维护一个内部列表 如果 trimCharsnull 或空数组,则此方法会修剪的空白字符。 从 .NET Framework 4 开始,如果 trimChars 为 null 或空数组,则方法 修剪所有 Unicode 空白字符(即,产生 true 的字符 当它们被传递给Char.IsWhiteSpace 方法时返回值)。因为这 更改,.NET Framework 3.5 SP1 及更早版本中的Trim() 方法删除 两个字符,ZERO WIDTH SPACE (U+200B) 和 ZERO WIDTH NO-BREAK SPACE (U+FEFF),即 .NET Framework 4 及更高版本中的Trim() 方法不会删除。 此外,.NET Framework 3.5 SP1 及更早版本中的 Trim() 方法 不修剪三个 Unicode 空白字符:蒙古元音分隔符 (U+180E), 窄无间断空间 (U+202F) 和中等数学空间 (U+205F)。

      【讨论】:

      • @downvoter 你愿意发表评论吗?您是否提到了 OP 的句子“但是我只需要从末尾删除它们”?
      【解决方案5】:
      Strings.RTrim("string")
      

      docs

      "string".TrimEnd()
      

      docs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-17
        • 2012-08-19
        • 2015-10-10
        • 1970-01-01
        • 1970-01-01
        • 2023-01-04
        • 1970-01-01
        • 2013-09-18
        相关资源
        最近更新 更多