PowerShell 修剪错误与字符串包含 "< char >$< repeated char >" ?



如果我在包含-char-$-repeated char-的字符串上使用Trim()方法,例如"BL$LA"或"LA$AB",Trim()也会在$之后去除重复的字符。

例如:

$a = 'BL$LA'
$b = $a.Trim("BL$")

返回A不是LA,而是

$a = 'BM$LA' 
$b = $a.Trim("BM$")

返回LA

有什么原因吗?还是我错过了什么?

Trim()方法从字符串对象的开头和结尾删除给定参数中的所有字符(字符串自动转换为字符数组(。您的第二个示例似乎只在做您想要的操作,因为字符串的其余部分没有任何要修剪的字符。

示范:

PS C:\> $a = 'BL$LA'PSC:\>$a.Trim("BL$"(A PS C:\>$a = 'LxB$LA'PSC:\>$a.Trim("BL$"(xB$LA

要从字符串的开头和结尾删除给定的子字符串,您需要这样的东西:

$a -replace '^BL$|BL$$'

正则表达式细分:

  • ^匹配字符串的开头。
  • $匹配字符串的末尾。
  • BL$匹配文字字符序列"BL$"。
  • ...|...是交替(匹配这些(子(表达式中的任何一个(。

如果您只想删除字符串开头的第一个$的文本,您也可以执行以下操作:

$a -replace '^.*?$'

正则表达式细分:

  • ^匹配字符串的开头。
  • $匹配文字$字符。
  • .*?将所有字符匹配到下一个(子(表达式(最短/非贪婪匹配(。

最新更新