如何用Powershell中的字符替换初始字符+空格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用Powershell中的字符替换初始字符+空格相关的知识,希望对你有一定的参考价值。
希望这个问题尚未在网站上得到解答。我想用该数字和空格替换字符串中的每个数字。所以这就是我现在所拥有的:
"31222829" -replace ("[0-9]","$0 ")
[0-9]查找任何数字,并将其替换为该字符和空格。但是,它不起作用。我从另一个网站看到使用0美元,但我不确定它的含义。我想要的输出是
3 1 2 2 2 8 2 9
但它只是给了我一个空白。有什么建议?
LardPies
答案
这可能不是正确的方法,但它确实有效。
("31222829").GetEnumerator() -join " "
.GetEnumerator
方法迭代字符串中的每个字符然后-join
运算符将与" "
空间连接所有这些字符
另一答案
tl;博士
PS> "31222829" -replace '[0-9]', '$& '
3 1 2 2 2 8 2 9
请注意,输出字符串有一个尾随空格,假设输入中的每个数字([0-9]
)都被自身($&
)替换为空格。
至于你试过的:
"31222829" -replace ("[0-9]","$0 ")
- 虽然在
(...)
中包含两个RHS操作数并不妨碍功能,但将它们设想为数组并不是真的有用 - 只需用,
枚举它们,不要将它们包含在(...)
中。 - 通常,使用
'...'
而不是"..."
作为RHS操作数(匹配的正则表达式和替换操作数),以防止PowerShell的字符串扩展(插值)与-replace
操作符最终看到的混淆。 例证:由于在替换操作数中使用"..."
,PowerShell的字符串插值实际上会将$0
扩展为前置变量,在没有变量的情况下扩展为空字符串 - 这就是为什么你最终看到一个空字符串。 即使您使用过'...'
,$0
在替换操作数中没有特殊含义;相反,你必须使用$&
来表示匹配的字符串,如this answer中所述。
要无条件地用空格分隔所有字符:
Drew's helpful answer绝对有效。 这是一个更加PowerShell惯用的替代方案:
PS> [char[]] '31222829' -join ' '
3 1 2 2 2 8 2 9
将字符串转换为[char[]]
会将其字符作为数组返回,然后-join
以空格作为分隔符连接。
注意:由于-join
仅在元素之间放置指定的分隔符(' '
),因此生成的字符串没有尾随空格。
以上是关于如何用Powershell中的字符替换初始字符+空格的主要内容,如果未能解决你的问题,请参考以下文章
如何用 JavaScript 字符串中的索引替换字符? [复制]