【问题标题】:Remove excess white space from string从字符串中删除多余的空格
【发布时间】:2011-08-05 12:20:20
【问题描述】:

我想使用 VB.net 删除多余的空格

例如。

"The   Quick          Brown Fox"

我要输出

"The Quick Brown Fox"

谢谢, 印记

【问题讨论】:

    标签: vb.net spaces


    【解决方案1】:

    您可以为此使用简单的正则表达式:

    Dim cleaned As String = Regex.Replace(input, "\s{2,}", " ")
    

    【讨论】:

      【解决方案2】:

      试试这个:

      Dim output As String = Regex.Replace("The   Quick          Brown Fox","\\s+" , " ")
      

      【讨论】:

      • 如果字符串超过一行,这不起作用。
      【解决方案3】:

      您真正想要的是将任何多个空格压缩为一个空格,一种方法是搜索两个空格并将它们替换为一个空格,直到没有两个相邻空格,例如这个:

         Dim myString As String = "The   Quick     Brown     Fox"
         While myString.IndexOf("  ") <> -1
             myString = myString.Replace("  ", " ")
         End While
         Console.WriteLine(myString)
      

      但是,由于.net strings 的某些理念,这并不是万无一失的,这可能会进入无限循环,但仅限于一些非常奇怪的输入。


      编辑:正如其他答案中所指出的,这种特殊的处理使用正则表达式更快(更简单)。

      【讨论】:

      • 感谢回复我刚刚用了正则表达式
      【解决方案4】:

      我意识到这个问题已经相当老了,但是还有另一个选项不涉及正则表达式,或者手动循环遍历字符串并替换:

      Private Function StripSpaces(input As String) As String
          Return String.Join(" ", input.Split(New Char() {}, StringSplitOptions.RemoveEmptyEntries))
      End Function
      

      和 C# 等价物:

      private string StripSpaces(string input)
      {
          return string.Join(" ", input.Split((char[])null, StringSplitOptions.RemoveEmptyEntries));
      }
      

      使用“null”值作为String.Split 上的拆分字符会导致拆分字符是所有在发送到Char.IsWhiteSpace 时返回true 的字符。因此,以这种方式调用该方法会将您的字符串拆分为所有空格,删除空字符串,然后将其重新连接在一起,并在每个拆分数组元素之间使用一个空格。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-20
        • 1970-01-01
        • 2013-06-03
        • 2018-11-10
        • 1970-01-01
        相关资源
        最近更新 更多