如何删除字符串中的额外逗号?

时间:2016-10-23 14:47:58

标签: powershell powershell-v4.0

任何人都可以帮我删除字符串中的额外逗号,并将它们传递给格式良好的另一个字符串,以便从PowerShell发送电子邮件。

$emails = "Abc@gmail.com,,,abc2@gmail.com,abc3@gmail.com,,"

我期待下面的字符串

$emailsTo = "Abc@gmail.com,abc2@gmail.com,abc3@gmail.com"

3 个答案:

答案 0 :(得分:3)

使用-replace运算符将连续逗号折叠为单个逗号,并从字符串的开头和结尾删除前导/尾随逗号:

$emails   = 'Abc@gmail.com,,,abc2@gmail.com,abc3@gmail.com,,'
$emailsTo = $emails -replace ',+', ',' -replace '^,|,$'

答案 1 :(得分:1)

试试这个

 $emails = ("Abc@gmail.com,,,abc2@gmail.com,abc3@gmail.com,," -split "," | where{$_ -ne ""}) -join ","

答案 2 :(得分:1)

补充现有的,有用的答案:

Esperento57's answer的更有效和简洁的重新制定:

> ',,Abc@gmail.com,,,abc2@gmail.com,abc3@gmail.com,,' -split ',' -ne '' -join ','
Abc@gmail.com,abc2@gmail.com,abc3@gmail.com

直接使用.NET Framework的替代方法,通过[string]类型的.Split()方法和RemoveEmptyEntries选项:

> $emails = ',,Abc@gmail.com,,,abc2@gmail.com,abc3@gmail.com,,'
> $emails.Split(',', [StringSplitOptions]::RemoveEmptyEntries) -join ','
Abc@gmail.com,abc2@gmail.com,abc3@gmail.com