You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:04:40