Powershell:如何将字符串中的第一个“:”替换为“,”?

Posted

技术标签:

【中文标题】Powershell:如何将字符串中的第一个“:”替换为“,”?【英文标题】:Powershell: how to replace first ":" in a string to be ","? 【发布时间】:2016-06-20 03:02:34 【问题描述】:

例如,我有一个指示 powershell 脚本编写者的文本文件,每一行如下所示:

Hello world.ps1:John Smith
Dowork.ps1:Blake Benn

我希望在每一行中找到第一个“:”并用“,”替换,这样我就可以得到一个 csv 文件,

Hello world.ps1,John Smith
Dowork.ps1,Blake Benn

我尝试使用“-replace”,但失败了:

"Hello World.ps1:John Smith" -replace ":" ","

At line:1 char:43
+ "Hello World.ps1:John Smith" -replace ":" ","
+                                           ~~~
Unexpected token '","' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], 
    ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

如何做到这一点?谢谢!

【问题讨论】:

如果你真的想只替换第一个:,请使用-replace '^(.*?):(.*)','$1,$2'而不是-replace ":","," 【参考方案1】:

-replace 运算符的语法不正确。仔细阅读操作员帮助 - help about_Comparison_Operators。您在查找和替换字符串之间缺少,

PS C:\> "Hello World.ps1:John Smith" -replace ":",","
Hello World.ps1,John Smith

【讨论】:

但是请记住,正如@MathiasRJessen 在单独的评论中指出的那样,这将替换 all 出现,而​​不仅仅是 first 出现问题要求。如果只有一个,是的,这就足够了。 正确 - 但是根据 OP 的样本数据,这似乎不是问题。

以上是关于Powershell:如何将字符串中的第一个“:”替换为“,”?的主要内容,如果未能解决你的问题,请参考以下文章

将相同的字符串附加到PowerShell中CSV列中的所有变量

使用 Powershell 中的 Stack,如何传递包含空格的测试参数?

将名称替换为第一个字母powershell

如何使用Java将字符串中的第一个字母大写?

如何将多个字符串参数传递给 PowerShell 脚本?

如何使用PowerShell替换文件中的多个字符串