我想将camelCase
或PascalCase
单词分隔为单独的单词集合。忽略现有空格将CamelCase转换为空格字符串
到目前为止,我有:
Regex.Replace(value, @"(\B[A-Z]+?(?=[A-Z][^A-Z])|\B[A-Z]+?(?=[^A-Z]))", " $0", RegexOptions.Compiled);
它工作正常的转换“TestWord”到“测试字”和离开单个词不变,例如Testing
仍为Testing
。
但是,ABCTest
得到转换为A B C Test
时,我更喜欢ABC Test
。
感谢你的回复,但是当这个值已经有一个空格的时候它不起作用。它最终使空间加倍,即“ABC测试”变成“ABC测试”,同样“ABCTest”变成“ABC测试”,即保持前导空间。 –
@CiaranMartin我会使用'Regex.match()'获得上面列出的所有匹配的MatchCollection。然后,您可以将其转换为数组,并使用单个空格分隔符将其加入到字符串中。这使得你的正则表达式保留了很多逻辑并使代码更具可读性。 – thodic
@CiaranMartin请参阅我对C#实现的编辑。 – thodic