【发布时间】:2020-10-22 02:14:57
【问题描述】:
我有一个多行字符串(来自 json),例如
"somekey": "somevalue",
"somekey": "somevalue"
"somekey": [somevalue]
"somekey": somenumber
"somekey": null,
我想将字符串拆分为一个数组,其中每个元素的值要么是 somevalue 的值,要么是 somenumber。 (我实际上是在形成一个数组,其中包含出现在 json 中的每个值的值)
这应该产生以下元素值:
somevalue
somevalue
somevalue
somenumber
我玩过以下代码的变体和添加:
$jsonValues = $jsonValues.Split(": ").Split([Environment]::NewLine)
但想知道实现这一目标的最有说服力的方法。
【问题讨论】:
-
是一个多行字符串还是一个字符串数组?
-
假设你有一个多行字符串,并且它存储在
$InStuff,这个工作...... >>>$InStuff.Split(':').Trim().Trim('",][').Where({$_}) -
谢谢李,我应该补充一点,实际上字符串是多行的,每一行都包含一些键。我所需要的只是将值收集到一个数组中,然后描述过去的键。我已经更新了问题以反映。您的代码有效,但也给了我作为数组值项的键
-
不客气! [grin] /////
.Split()方法不会在括号中的字符串上拆分...它会在该字符串中的每个字符上拆分。这是另一个尝试... >>>($InStuff -split [System.Environment]::NewLine).ForEach({$_.Split(':')[-1]}).Trim(' ",][') -
@mklement0 这个想法最初是获取一个 json,并尝试从中获取每个值,无论它在哪里,并将其放入任意值的数组中。必须先对原始数据进行一些切片。虽然可能有一种更优化的方式从 json 中获取每个值,通过原始字符串搜索、拆分、修剪等。
标签: arrays string powershell split