如何用PowerShell提取字符串奇数位置字符?求更简便实现方式
更简便的PowerShell提取奇数位置字符方法
当然有更优雅的写法!你原来的循环代码没问题,但PowerShell有不少更简洁的方式能实现同样的需求,包括你提到的思路,咱们一个个看:
方法1:用正则-replace(最简便)
这是最简洁的实现,一行代码就能搞定:
$student_name = "Consequences" $out = $student_name -replace '(.?).', '$1' $out # 输出: Cneune
解释:
正则表达式 (.?). 的逻辑是:
(.?)捕获任意一个字符(对应你要保留的偶数索引位置,也就是第1、3、5...个字符).匹配这个字符后面紧跟的任意一个字符(对应你要丢弃的奇数索引位置)- 替换为
$1就是只保留捕获到的那个字符,相当于每两个字符只留第一个,正好符合你的需求。
方法2:字符数组筛选(更直观)
如果觉得正则有点抽象,也可以把字符串转成字符数组,筛选出偶数索引的元素再拼接:
$student_name = "Consequences" $charArray = [char[]]$student_name # 筛选索引为偶数的元素(0、2、4...) $selectedChars = $charArray[(0..($charArray.Count - 1) | Where-Object { $_ % 2 -eq 0 })] $out = $selectedChars -join '' $out # 输出: Cneune
关于-split的思路
用-split其实也能实现,但相对麻烦一点,因为-split默认按空白分割,需要先把字符串拆成单个字符的数组(其实和上面的[char[]]效果类似):
$student_name = "Consequences" # 用-split拆成单个字符,过滤掉空字符串 $charArray = $student_name -split '' | Where-Object { $_ } $out = $charArray[(0..($charArray.Count - 1) | Where-Object { $_ % 2 -eq 0 })] -join '' $out
不过这种写法不如前面两种简洁,所以更推荐前两种方法。
内容的提问来源于stack exchange,提问作者mayursharma
相关产品推荐
相关产品推荐

