【问题标题】:Select all words from string except last (PowerShell)从字符串中选择除最后一个以外的所有单词(PowerShell)
【发布时间】:2020-01-17 05:48:09
【问题描述】:

所以我想要实现的是从给定字符串中选择所有单词,除了最后一个。 所以我有几个字符串;

On The Rocks
The Rocks
Major Bananas

我想选择所有单词,除了每个字符串中的最后一个单词。 我发现我可以使用 split() 将每个单词分开。虽然我想不通了。

提前致谢。

【问题讨论】:

    标签: arrays powershell split


    【解决方案1】:
    $string.SubString(0, $string.LastIndexOf(' '))
    

    【讨论】:

      【解决方案2】:

      这就是我如何做这样的事情。

      $Sample = "String sample we can use"
      $Split = $Sample.Split(" ")
      [string]$split[0..($Split.count-2)]
      

      【讨论】:

      • 最好明确加入空格$split[0..($Split.count - 2)] -join " ",因为它清楚地表明了您的意图。 (如果不是,那你为什么不用$Sample.Split())?
      【解决方案3】:

      你可以这样做:

      $test -replace "\S*\s*$"
      

      【讨论】:

        【解决方案4】:

        即使有尾随空格,这也会删除最后一个单词。它还保留单词之间的多个空格,并删除最后一个单词之前的空格。

        'this   is   a    test ' -replace '^(.+\b)\s+\S+\s*','$1'
        

        如果字符串是单个单词,它不会删除最后一个单词。

        【讨论】:

          【解决方案5】:
          $string -replace '^(.+)\b.+$','$1'
          

          【讨论】:

            【解决方案6】:

            .. 运算符效果很好,但是在使用管道时,您可以使用 select cmdlet(Select-Object 的别名)。 以下是使用 select cmdlet 从数组中删除项目的方法。

            PS> "On The Rocks", "The Rocks", "Major Bananas" |
            foreach { write-host $($_ -split ' ' | select -skiplast 1) }
            On The
            The
            Major
            PS>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-02-03
              • 1970-01-01
              • 2010-10-01
              • 2016-01-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-01-21
              相关资源
              最近更新 更多