PowerShell中双引号内Trim()方法失效问题求助
解决PowerShell字符串插值中方法调用不生效的问题
问题出在PowerShell的字符串插值解析逻辑上:直接在双引号里写$_.trim()时,解析器只会把$_识别为变量,后面的.trim()会被当作普通文本输出,不会执行方法调用。
正确写法
用**子表达式$()**包裹方法调用,让PowerShell先执行trim操作再将结果插入字符串:
$String = "Hello world" $String | % {"Page 1 = ($($_.Trim()))"}
执行后会得到正确结果:
Page 1 = (Hello world)
处理多行文本文件的完整示例
如果要给文本文件的每一行添加前缀并去除首尾空格,用以下命令:
# 读取源文件、处理每一行后写入输出文件 Get-Content "source.txt" | ForEach-Object { "Page 1 = ($($_.Trim()))" } | Set-Content "result.txt"
另一种更清晰的写法
也可以先将trim后的结果存入变量,再插入字符串,可读性更好:
$String | % { $trimmedLine = $_.Trim() "Page 1 = ($trimmedLine)" }
内容的提问来源于stack exchange,提问作者hellen_dorandt89
相关产品推荐
相关产品推荐

