这实际上只是对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