获取列表中每个字符串的第一个字符
get first char of each string in a list
我正在尝试获取列表中每个字符串的第一个字符。该列表包含:
hehee_one
hrhr_one
test_two
我正在使用 foreach 对象循环列表
ForEach-Object {($jsonRules.name[0])}
但这只是获取第一个元素,这是有道理的。如果我这样做:
ForEach-Object {($jsonRules.name[0][0])}
我只得到第一个元素的第一个字符,但没有得到其余的..
所以请帮助我..
谢谢
Santiago Squarzon 在评论中提供了关键指针:
提供你想要的字符串ForEach-Object
cmdlet to operate on via the pipeline, which allows you to refer to each via the automatic $_
variable(为简洁起见,以下使用数组文字作为输入):
PS> 'tom', 'dick', 'harry' | ForEach-Object { $_[0] }
t
d
h
或者,对于内存中已有的值,使用 .ForEach
数组 方法 以获得更好的性能:
('tom', 'dick', 'harry').ForEach({ $_[0] })
foreach
语句提供最佳性能:
foreach ($str in ('tom', 'dick', 'harry')) { $str[0] }
至于你试过的:
ForEach-Object { ... }
- 没有管道输入 - 本质上与直接执行 ...
相同。
因此,用上面的样本输入表示:
你执行了:
ForEach-Object { ('tom', 'dick', 'harry')[0][0] }
等同于:
('tom', 'dick', 'harry')[0][0]
因此从输入数组(第一个 [0]
)中提取 first 元素,然后将第二个 [0]
应用于只有那个字符串,因此只会产生 't'
。
换句话说:使用 ForEach-Object
仅对来自管道的输入 有意义 。
我正在尝试获取列表中每个字符串的第一个字符。该列表包含:
hehee_one
hrhr_one
test_two
我正在使用 foreach 对象循环列表
ForEach-Object {($jsonRules.name[0])}
但这只是获取第一个元素,这是有道理的。如果我这样做:
ForEach-Object {($jsonRules.name[0][0])}
我只得到第一个元素的第一个字符,但没有得到其余的..
所以请帮助我.. 谢谢
Santiago Squarzon 在评论中提供了关键指针:
提供你想要的字符串ForEach-Object
cmdlet to operate on via the pipeline, which allows you to refer to each via the automatic $_
variable(为简洁起见,以下使用数组文字作为输入):
PS> 'tom', 'dick', 'harry' | ForEach-Object { $_[0] }
t
d
h
或者,对于内存中已有的值,使用 .ForEach
数组 方法 以获得更好的性能:
('tom', 'dick', 'harry').ForEach({ $_[0] })
foreach
语句提供最佳性能:
foreach ($str in ('tom', 'dick', 'harry')) { $str[0] }
至于你试过的:
ForEach-Object { ... }
- 没有管道输入 - 本质上与直接执行...
相同。因此,用上面的样本输入表示:
你执行了:
ForEach-Object { ('tom', 'dick', 'harry')[0][0] }
等同于:
('tom', 'dick', 'harry')[0][0]
因此从输入数组(第一个
[0]
)中提取 first 元素,然后将第二个[0]
应用于只有那个字符串,因此只会产生't'
。
换句话说:使用
ForEach-Object
仅对来自管道的输入 有意义 。