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

PowerShell实现含下划线字符串首尾字符缩写处理需求

解决方案

先直接上可运行的PowerShell脚本,后面给你拆解开讲每一步:

# 读取Text.txt的全部内容,拆成单个单词的数组
$content = Get-Content -Path "Text.txt" -Raw
$words = $content -split '\s+'

# 逐个处理每个单词
$processedWords = foreach ($word in $words) {
    if ($word -match '_') {
        # 把带下划线的单词拆成小部分
        $parts = $word -split '_'
        # 每个小部分取首字符+最后一个字符
        $processedParts = $parts | ForEach-Object {
            $_.Substring(0, 1) + $_.Substring($_.Length - 1, 1)
        }
        # 用下划线把处理后的小部分拼回去
        $processedParts -join '_'
    }
    else {
        # 不带下划线的直接留着
        $word
    }
}

# 输出处理后的结果
$processedWords -join ' '

逐行解释(新手友好版)

  1. 读取文件:Get-Content -Path "Text.txt" -Raw把整个文件内容读成一个字符串,-split '\s+'把内容按任意数量的空格拆成单独的单词,存到$words数组里。
  2. 循环处理每个单词:
    • 用if ($word -match '_')判断当前单词有没有下划线;
    • 有下划线的话,先用-split '_'把单词拆成多个小片段(比如sometext4_sometext5_sometext6会拆成sometext4、sometext5、sometext6);
    • 对每个小片段,Substring(0,1)取第一个字符,Substring($_.Length -1,1)取最后一个字符,拼在一起;
    • 再用-join '_'把这些处理后的小片段用下划线连起来,就得到s4_s5_s6这种结果;
    • 没有下划线的单词直接原封不动保留。
  3. 输出结果:把处理后的所有单词用空格连起来,直接打印到控制台。如果要把结果存回新文件,加一行:
    $processedWords -join ' ' | Set-Content -Path "处理后的文件.txt"
    

测试效果

你的Text.txt内容是:

sometext1 sometext2 sometext3 sometext4_sometext5_sometext6 sometext7 sometext8 sometext9_sometext10 sometext11

运行脚本后,输出就是你要的:

sometext1 sometext2 sometext3 s4_s5_s6 sometext7 sometext8 s9_s0 sometext11

内容的提问来源于stack exchange,提问作者Honza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:36:17