如果我对包含Trim()
的字符串使用-char-$-repeated char-
方法,例如“BL $ LA”或“LA $ AB”,Trim()
也会在$
之后删除重复的字符。
例如:
$a = 'BL$LA'
$b = $a.Trim("BL$")
返回A
而不是LA
,但
$a = 'BM$LA'
$b = $a.Trim("BM$")
返回LA
。
有什么理由?或者我错过了什么?
答案 0 :(得分:2)
Trim()
方法从字符串对象的开头和结尾删除给定参数中的所有字符(字符串自动强制转换为字符数组)。你的第二个例子似乎只是做你想要的,因为字符串的其余部分没有任何要修剪的字符。
演示:
PS C:\> $a = 'BL$LA' PS C:\> $a.Trim("BL$") A PS C:\> $a = 'LxB$LA' PS C:\> $a.Trim("BL$") xB$LA
要从字符串的开头和结尾删除给定的子字符串,您需要这样的内容:
$a -replace '^BL\$|BL\$$'
正则表达式细分:
^
匹配字符串的开头。$
匹配字符串的结尾。BL\$
匹配文字字符序列“BL $”。...|...
是一个替代(匹配任何这些(子)表达式)。如果您只想从字符串开头删除包含第一个$
的文字,您还可以执行以下操作:
$a -replace '^.*?\$'
正则表达式细分:
^
匹配字符串的开头。\$
匹配文字$
字符。.*?
匹配所有字符,直到下一个(子)表达式(最短/非贪婪匹配)。