2012-03-29 133 views
3

我听说这个论坛对于回答最疯狂的问题是惊人的,我已经搜索嗨和低的回答我疯狂的问题,但我找不到答案。所以我把这件事发布给社区。在PowerShell中分割一个字符串

我使用PowerShell来满足我的脚本需求。请不要为我提供另一种脚本语言的解决方案,我相信其他脚本语言会这样做,但是我需要在PowerShell中使用它。

我有我需要拆分它们本质上类似于许多字符串:

HelloWorld 
HelloWorldIAmNew 
HelloWorldIAmNewToScripting 
ThankYouForHelpingMe 

我需要根据大写字母割裂开来,即

Hello World 
Hello World I Am New 
Hello World I Am New To Scripting 
Thank You For Helping Me 

我上有一个基本的了解分割字符串,但这比你的平均字符串更难。

回答

9

相当简单使用负一正则表达式和positive lookahead(?=pattern)和区分大小写-csplit运营商如要做到:

PS> "HelloWorldIAmNewToScripting" -csplit "(?<=.)(?=[A-Z])" 
Hello 
World 
I 
Am 
New 
To 
Scripting 

或者,如果你想它的空间分隔:

PS> "$("HelloWorldIAmNewToScripting" -csplit "(?<=.)(?=[A-Z])")" 
Hello World I Am New To Scripting 
+0

这在开始处添加一个空行。 – 2012-03-29 05:30:59

+0

呃,很容易修复。 :-) – 2012-03-29 05:38:50

+0

+1〜3倍于我的速度:-) – 2012-03-29 05:53:54

1

试试这个:

("HelloWorldIAmNewToScripting" -creplace '[A-Z]', ' $&').Trim().Split($null) 
Hello 
World 
I 
Am 
New 
To 
Scripting 

("HelloWorldIAmNewToScripting" -creplace '[A-Z]', ' $&').Trim() 
Hello World I Am New To Scripting