【问题标题】:Determine if string ends in whitespace确定字符串是否以空格结尾
【发布时间】:2010-06-08 02:26:26
【问题描述】:

给定一个以空格字符结尾的字符串,返回 true。

我确信我应该能够使用正则表达式来做到这一点,但我没有任何运气。 regular expressions 的 MSDN 参考告诉我 \s 应该匹配空白,但我无法弄清楚其余部分。

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    您当然可以为此使用正则表达式,我相信比我更聪明的人会发布确切的操作方法:),但您可能不想在这个案例。简单地确保字符串不为空或空,然后返回

    几乎肯定会更快
    Char.IsWhiteSpace(myString[length - 1])
    

    【讨论】:

    【解决方案2】:

    像这样:

    if (Regex.IsMatch(someString, @"\s+$"))
    
    • \s 匹配空格
    • + 表示前面的一个或多个表达式
      (一个或多个空格字符)
    • $ 表示字符串的结尾

    【讨论】:

      【解决方案3】:

      Trim() 函数(和 TrimEnd())删除 所有 空格,因此您可以通过将字符串与修剪后的版本进行比较来做到这一点:

      if (myString != myString.TrimEnd())
      {
         //the string ends with whitespace
      }
      

      实际上,已经在这里的其他答案当然是更直接和更快地完成测试。但是,根据我的经验,大多数情况下,当您需要知道这一点时,您很快也需要使用修剪过的字符串。在这些情况下,将其放入变量中通常很有用,以避免需要多次调用 TrimEnd()

      var trimmed = myString.TrimEnd();
      if (myString != trimmed)
      {
         //use trimmed here
      }
      

      【讨论】:

        【解决方案4】:

        怎么样

        .+\s$
        

        【讨论】: