不确定这是否有效,但 PowerShell 中的字符串可以使用数组索引语法引用,类似于 Python。
这并不完全直观,因为index = 0 引用了第一个字母,但确实如此:
- 允许第二个索引号比字符串长,而不会产生错误
- 反向提取子字符串
- 从字符串末尾提取子字符串
这里有一些例子:
PS > 'Hello World'[0..2]
产生结果(为清楚起见包括索引值 - 未在输出中生成):
H [0]
e [1]
l [2]
通过-join '' 可以使其更有用:
PS > 'Hello World'[0..2] -join ''
Hel
使用不同的索引可以获得一些有趣的效果:
转发
使用小于第二个的第一个索引值,子字符串将按照您的预期向前提取。这次第二个索引值远超字符串长度但没有报错:
PS > 'Hello World'[3..300] -join ''
lo World
不同于:
PS > 'Hello World'.Substring(3,300)
Exception calling "Substring" with "2" argument(s): "Index and length must refer to a location within
the string.
向后
如果您提供的第二个索引值低于第一个索引值,则该字符串将反向返回:
PS > 'Hello World'[4..0] -join ''
olleH
从头到尾
如果你使用负数,你可以从字符串的末尾引用一个位置。要提取'World',最后5个字母,我们使用:
PS > 'Hello World'[-5..-1] -join ''
World