【问题标题】:How to split weird string into correct parts如何将奇怪的字符串拆分成正确的部分
【发布时间】:2019-10-02 09:55:44
【问题描述】:

我从程序中得到一个类似"ABC","edf",1.2,75,"zzz10"",763,"abc, fgh" 的字符串,我需要使用 PowerShell 将其拆分为预期的最终结果:ABC|edf|1.2|75|zzz10"|763|abc, fgh

我的想法是以某种方式拆分字符串以创建一个数组,然后我可以-join '|'

问题是 - 我不能只是 -split-replace 字符 ," 因为如果它们被 "" 包围,它们需要在最终结果中

你会怎么做?

【问题讨论】:

  • 对我来说,这看起来像是一个字符串几乎被引用而数字未被引用的数组。无需拆分,只需加入|即可。 $weirdstring.GetType() 向您展示了什么?
  • @Theo 我把它作为一个字符串从另一个程序传递过来。他们基本上做& myScript.ps1 "weirdString" - 如果我尝试通过将它包装到@() 中来使其成为一个数组,这是一个语法错误,因为"zzz10"" 部分

标签: powershell


【解决方案1】:

子字符串 "zzz10"" 中的嵌套单引号需要加倍以使数据正确 CSV。之后你可以像这样处理它:

$s = '"ABC","edf",1.2,75,"zzz10"",763,"abc, fgh"'

$s -replace '"",', '""",' |
    ConvertFrom-Csv -Header a,b,c,d,e,f,g |
    ForEach-Object { $_.PSObject.Properties.Value -join '|' }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多