我正在使用正则表达式
System.Text.RegularExpressions.Regex.Replace(stringToSplit, "([A-Z])", " $1").Trim()
Run Code Online (Sandbox Code Playgroud)
用大写字母拆分字符串,例如:
'MyNameIsSimon'成为'我的名字是西蒙'
在使用枚举时,我发现这非常有用.我想要做的是稍微更改它,以便只有当下一个字母是小写字母时才拆分字符串,例如:
'USAToday'将成为'今日美国'
可以这样做吗?
编辑:感谢大家的回应.我可能没有完全想到这一点,在某些情况下'A'和'I'需要被忽略,但这是不可能的(至少不是以一种有意义的方式).在我的情况下,虽然下面的答案做我需要的.谢谢!
Tom*_*lak 43
((?<=[a-z])[A-Z]|[A-Z](?=[a-z]))
或其支持Unicode的表兄弟
((?<=\p{Ll})\p{Lu}|\p{Lu}(?=\p{Ll}))
全局替换时
" $1"
Run Code Online (Sandbox Code Playgroud)
手柄
TodayILiveInTheUSAWithSimon USAToday IAmSOOOBored
生产
Today I Live In The USA With Simon USA Today I Am SOOO Bored
在第二步,你必须修剪字符串.
Dav*_*und 12
任何未跟随大写字符的大写字符:
Replace(string, "([A-Z])(?![A-Z])", " $1")
Run Code Online (Sandbox Code Playgroud)
编辑:
我刚刚注意到你正在使用它进行枚举.我真的不鼓励使用像这样的枚举的字符串表示,并且手头的问题是一个很好的理由.请看一下:http: //www.refactoring.com/catalog/replaceTypeCodeWithClass.html