【问题标题】:Split string with variable whitespace characters in Powershell在Powershell中使用可变空格字符拆分字符串
【发布时间】:2020-05-22 00:53:58
【问题描述】:

我想拆分一个字符串,女巫有一个可变的空白字符,但是得到很多我想消除的空行。 这段代码

$text = "Video  Video  Audio  Audio  VBI    VBI"
$text.Split()

输出这个

Video

Video

Audio

Audio

VBI



VBI

PS H:\>

我想要这个

Video
Video
Audio  
Audio
VBI
VBI

很晚的编辑:
注意到这个问题仍然有很多观点,所以我想澄清一下,当我问这个问题时,我对函数式编程或正则表达式一无所知。
这里提到的所有解决方案都适用,因为有多种方法可以删除空格并从字符串创建数组。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您可以使用 PowerShell 的 -split 运算符,该运算符使用正则表达式。

    "Video  Video  Audio  Audio  VBI    VBI" -split '\s+'
    

    正如@StijnDeVos 所述,这不会删除前导/尾随空格。

    这里,\s 代表空白字符,+ 匹配其中的一个或多个。更有理由选择@user3554001 的回答。

    另一种选择是过滤空字符串。

     "Video  Video  Audio  Audio  VBI    VBI".split()| where {$_}
    

    【讨论】:

    • -split '\s+' 不会删除前导和尾随空格,因此您仍然需要过滤掉空字符串。
    【解决方案2】:

    你可以使用这个 sn-p 来消除空行:

    $text.split(" ",[System.StringSplitOptions]::RemoveEmptyEntries)
    

    【讨论】:

    • 如果字符串之间有一个制表符,这不起作用。
    • @randomuser15995183 如果您指定制表符"`t",它会执行此操作。试试这个,按 Ctrl-J 换行。 [char]9 是 Tab 字符:"1 2 $([char]9)3 4".split(" `n`t",[System.StringSplitOptions]::RemoveEmptyEntries)
    【解决方案3】:

    -split "Video Video Audio Audio VBI VBI"

    【讨论】:

    • +1 我更喜欢这个而不是我自己的答案。我忘了-split 可以用作一元运算符。
    【解决方案4】:

    试试这个,它在执行拆分命令之前用一个实例替换多个空格实例:

    $($text -replace '\s+', ' ').split()
    

    【讨论】:

      【解决方案5】:

      -split 运算符采用正则表达式参数,因此只需匹配多个空白字符 (\s+):

      $Text = $text = "Video  Video  Audio  Audio  VBI    VBI"
      $text -split '\s+' -match '\S'
      
      Video
      Video
      Audio
      Audio
      VBI
      VBI
      

      最后一个空格之后的任何尾随空格都可能会留下一个空条目,因此 -match 将消除任何只有空格的内容。

      【讨论】:

        【解决方案6】:

        其他解决方案:

        $text -split ' ' | where {$_.Trim() -ne ''}
        

        或:

        $text.Split(' ').Where({$_.Trim() -ne ''})
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-16
          • 2017-06-18
          • 2015-11-26
          • 2023-03-28
          • 2015-02-07
          相关资源
          最近更新 更多