如何在每个换行符上将字符串拆分为数组?

时间:2017-07-12 13:40:33

标签: powershell

在我的情况下,我会有一个看起来像这样的字符串。

$emailList = "example@mail.com
              example2@mail.com
              example3@mail.com"

如何将其移植到没有空格的数组中,因此它看起来像

$emailList = @("example@mail.com","example2@mail.com","example3@mail.com"

3 个答案:

答案 0 :(得分:6)

根据评论,如果你这样做:

($emailList -split '\r?\n').Trim()

它使用-split根据新行/返回字符将列表分成数组,然后使用.Trim()删除每个字符串两侧的任何空格。

在此之后,结果现在已经是一个数组。但是,如果您明确希望输出为由双引号括起的逗号分隔字符串列表,则可以执行以下操作:

(($emailList -split '\r?\n').Trim() | ForEach-Object { '"'+$_+'"' }) -Join ','

使用ForEach-Object在每个条目周围添加引号,然后使用-Join将它们与,相关联。

答案 1 :(得分:0)

$emailList = "example@mail.com
              example2@mail.com
              example3@mail.com"
$emailList.Split([Environment]::NewLine,[Stringsplitoptions]::RemoveEmptyEntries).trim()

答案 2 :(得分:0)

-split 在左侧拆分可变空白:

$emailList = -split 'example@mail.com
              example2@mail.com
              example3@mail.com'
$emailList

example@mail.com
example2@mail.com
example3@mail.com

你也可以形成一个数组list this。 @() 几乎不需要。

$emailList = 'example@mail.com','example2@mail.com','example3@mail.com'

或者作为快捷方式(echo 是写输出的别名):

$emailList = echo example@mail.com example2@mail.com example3@mail.com