如何用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中的字符替换初始字符+空格的主要内容,如果未能解决你的问题,请参考以下文章

使用tohash.select时,如何用字符串替换空值?

如何用 JavaScript 字符串中的索引替换字符? [复制]

如何用熊猫列中的另一个字符串替换子字符串[关闭]

如何用非重音字符替换clickhouse中数组中的每个单词的每个重音字符?

如何用c#中的变量值替换字符串?

如何用sed命令替换一行中的某个字符串