這實際上只是對Graimer's solution的一個評論,但它會太長了,也不足以作爲評論可讀,所以我將它作爲(補充)答案。
$s = "Members : {member1, member2, member3, member4, member5, member6}"
$s -match '^(.*?{)(.*)(})$'
$pad = " " * $matches[1].Length
$matches[1] + ($matches[2] -replace '(.{1,20},) ', "`$1`r`n$pad") + $matches[3]
第一個正則表達式分割字符串成3個部分,可以通過$matches
收集訪問:
Name Value
---- -----
3 }
2 member1, member2, member3, member4, member5, member6
1 Members : {
0 Members : {member1, member2, member3, member4, member5, member6}
刪除
USER\
你可以做這樣的事情後
要重新換弦
$matches[1]
是開幕花括號的序幕,$matches[2]
是會員列表,$matches[3]
是結束花括號。現在你只需要在任何你想要的長度來包裝$matches[2]
:
'(.*{1,20},) '
上面的意思是「最多20個字符後跟一個逗號和空格的最長匹配」。將其替換爲1 st組($1
),然後換行符(``r n``) and a number of spaces that matches the length of the prologue (
$ pad`),並用序幕和尾部大括號將其粘合在一起。
爲什麼不在運行代碼之前抑制所有換行符? '%'是foreach的別名,爲什麼要使用它兩次? – 2013-02-12 19:56:31
你是對的,這是沒有必要的。我不知道我在那裏。 – user2065960 2013-02-12 21:12:56