我试图在 powershell 中找到一种方法来删除多个空格。
但我发现如何在 php 中做到这一点。"删除多个空格"
可能会有类似的正则表达式可用。
如何在 powershell 中实现相同的目标?
我的字符串是这样的
Xcopy Source Desination
有些行可能在 Source 和 Destination 之间包含多个空格。
我试图在 powershell 中找到一种方法来删除多个空格。
但我发现如何在 php 中做到这一点。"删除多个空格"
可能会有类似的正则表达式可用。
如何在 powershell 中实现相同的目标?
我的字符串是这样的
Xcopy Source Desination
有些行可能在 Source 和 Destination 之间包含多个空格。
如果您希望将多个连续的空白字符折叠成一个空格,那么您可以使用运算符来执行此-replace
操作。鉴于...
PS> $beforeReplace = ' [ Hello, World! ] '
PS> $beforeReplace
[ Hello, World! ]
PS> $beforeReplace.Length
29
...您会这样称呼-replace
接线员...
PS> $afterReplace = $beforeReplace -replace '\s+', ' '
PS> $afterReplace
[ Hello, World! ]
PS> $afterReplace.Length
19
第一个参数 to-replace
是要匹配的正则表达式模式,第二个参数是将替换任何匹配项的文本。 \s
将匹配一个空白字符,并+
表示匹配一个或多个匹配项,因此,换句话说,一个或多个相邻的空白字符将被替换为单个空格。
如果您不需要将所有空白字符规范化为空格,因此可以保持独立空白字符保持不变,那么对于长字符串,您可能会看到这种变体的更好性能......
PS> $afterReplace = $beforeReplace -replace '\s{2,}', ' '
PS> $afterReplace
[ Hello, World! ]
PS> $afterReplace.Length
19
使用量词\s{2,}
表示“至少匹配前面的元素两次”;因此,不会替换独立的空白字符。当输入字符串包含空格字符的混合...
PS> $beforeReplace = "1Space: ;2Space: ;1Tab:`t;2Tab:`t`t;1Newline:`n;2Newline:`n`n;"
PS> $beforeReplace
1Space: ;2Space: ;1Tab: ;2Tab: ;1Newline:
;2Newline:
;
PS> $beforeReplace.Length
57
...注意这两种方法的结果有何不同...
PS> $afterReplaceNormalized = $beforeReplace -replace '\s+', ' '
PS> $afterReplaceNormalized
1Space: ;2Space: ;1Tab: ;2Tab: ;1Newline: ;2Newline: ;
PS> $afterReplaceNormalized.Length
54
PS> $afterReplaceUnnormalized = $beforeReplace -replace '\s{2,}', ' '
PS> $afterReplaceUnnormalized
1Space: ;2Space: ;1Tab: ;2Tab: ;1Newline:
;2Newline: ;
PS> $afterReplaceUnnormalized.Length
54
虽然两者都产生相同长度的字符串,但未规范化的替换使单个空格、单个制表符和单个换行符空白运行未修改。无论相邻的空白字符是否相同,这都是一样的。
help about_Comparison_Operators
[ Windows PowerShell 2.0 ] [ PowerShell (Core) ]help about_Regular_Expressions
[ Windows PowerShell 2.0 ] [ PowerShell (Core) ]'[ Hello, World! ]' -replace '^\[\s+','[' -replace '\s+]$',']' -replace '\s+',' '
Bacon 有解释 powershell 很有趣。即使我知道 powershells 转义字符是 ` '['
,我也不得不转义。'\'
另一种方式。-split 在左侧拆分可变空白:
-split 'Xcopy Source Destination' -join ' '
Xcopy Source Destination