【问题标题】:How to remove part of a string with powershell?如何使用powershell删除部分字符串?
【发布时间】:2016-03-24 06:57:21
【问题描述】:

在 powershell 中,我有不同的字符串,例如以下内容(3 个不同的示例):

name_something_else_10
another_name_200
what_ever_you_like_1234567

我想删除最后一个下划线之后的所有内容。所以我想要得到的是以下内容:

name_something_else
another_name
what_ever_you_like

每个字符串都作为一个变量提供,我也需要一个变量中的结果。然后我正在寻找的是如何使用如下函数剪切字符串的一部分:

$newString = CutOffEveryAfterUnderscore $oldString

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您可以将正则表达式 ('_[^_]*$') 与 replace函数结合使用:

    function Remove-LastUnderscore
    {
        [CmdletBinding()]
        Param
        (
            [Parameter(Mandatory=$true,Position=0)]
            [string]
            $string
        )
    
        $string -replace '_[^_]*$'
    }
    

    现在你可以像这样使用它:

    $newString =  Remove-LastUnderscore $oldString
    

    或者没有函数:

    $newString =  $oldString -replace '_[^_]*$'
    

    注意:此解决方案也适用于不带下划线的字符串。

    【讨论】:

      【解决方案2】:

      一种方法:

      function Get-Prefix
      {
          param($str)
          return $str.substring(0, $str.lastindexof('_'))
      }
      
      $strings = @("name_something_else_10",
          "another_name_200",
          "what_ever_you_like_1234567"
      )
      
      $strings | %{
          Get-Prefix $_
      }
      

      【讨论】:

        猜你喜欢
        • 2011-03-07
        • 2013-11-07
        • 2019-08-10
        • 1970-01-01
        • 2017-07-02
        • 2017-06-26
        • 1970-01-01
        • 2014-03-28
        相关资源
        最近更新 更多