【问题标题】:Powershell string separationPowershell 字符串分离
【发布时间】:2017-07-12 16:27:02
【问题描述】:

我有一个字符串,其值为例如 22_ABCD 现在我只需要参数中的 ABCD。在 powershell 中执行此操作的最佳方法是什么?

我是否需要使用 Split() 然后使用 $stringvalue = Split[1] ?还是powershell中有一个功能可以做到这一点?

【问题讨论】:

  • 所有字符串的格式是否相同(##_aaaa)?请提供更多细节。

标签: string powershell split


【解决方案1】:

Split 是一种做你想做的事情的方法,可以像这样使用......其中括号之间的值是你想要用于拆分的字符。

$string = "22_ABCD"
$string.Split("_")

运行上述代码会输出一个包含两项的数组:

22
ABCD

然后您可以使用[1][0] 是第一项)引用数组中的第二项,如下所示:

$string.Split("_")[1]

仅输出第二项:

ABCD

【讨论】:

  • 太好了,不知道可以直接拆分字符串。太好了:)
【解决方案2】:

如果您要查找字母数字字符而不是下划线后的下一组字符,则可以使用正则表达式。

$x = '22_ABCD_FTG_3'
[regex]::match($x,'([A-Z)]+)').Groups[1].Value

【讨论】:

    【解决方案3】:
    #method 0, with split operator
    $Elements="22_ABCD" -split "_"
    $Elements[0]
    $Elements[1]
    
    #method 1, with split member 
    $Elements="22_ABCD".Split('_')
    $Elements[0]
    $Elements[1]
    
    #method 2, with split member and direct affectation
    $Element1, $Element2="22_ABCD".Split('_')
    $Element1
    $Element2
    
    #method 3, with ConvertFrom-String
    $Elements="22_ABCD" | ConvertFrom-String -Delimiter "_" -PropertyNames "Element1", "Element2"
    $Elements.Element1
    $Elements.Element2
    
    #method 4, with ConvertFrom-Csv
    $Elements="22_ABCD" | ConvertFrom-Csv -Delimiter "_" -Header "Element1", "Element2"
    $Elements.Element1
    $Elements.Element2
    
    #method 5, with regex
    $Elements=[regex]::split("22_ABCD", '_')
    $Elements[0]
    $Elements[1]
    

    【讨论】:

      猜你喜欢
      • 2022-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2019-12-16
      相关资源
      最近更新 更多