Regex 将字符串中单词的第一个字母大写

Regex 将字符串中单词的第一个字母大写,regex,string,groovy,Regex,String,Groovy,在groovy中,我很难理解如何将字符串转换为camel大小写。假设我从一个看起来像“1-800 FOO.BAR”的字符串开始。最终,我希望它变成“1800FooDotBar”。通过执行以下操作,我可以获得1800FOODotBar: String str = "1-800 FOO.BAR" String tempStr = str.replaceAll(/(?i)\.com/, "DotCom") String newStr = tempStr.replaceAll(/\\W/, "") 我

在groovy中,我很难理解如何将字符串转换为camel大小写。假设我从一个看起来像“1-800 FOO.BAR”的字符串开始。最终,我希望它变成“1800FooDotBar”。通过执行以下操作,我可以获得1800FOODotBar:

String str = "1-800 FOO.BAR"
String tempStr = str.replaceAll(/(?i)\.com/, "DotCom")
String newStr = tempStr.replaceAll(/\\W/, "")
我只是不知道如何把中间的大写字母删去。我遇到了一些关于capitalize()方法的信息,这些信息应该会有所帮助,但我对Groovy还不够熟悉,不知道如何使用它。我想我需要为每个单词将字符串拆分为单独的字符串,然后将每个字符串的第一个字母大写,但是接下来如何构建最终结果?我知道有人问过类似的问题,但我只是不知道如何获取这些信息并从中生成完整的Groovy代码。提前谢谢

非常粗略地说:

String str = "1-800 FOO.BAR"
println str.replaceAll(/\./, " Dot ").split(/[^\w]/).collect { it.toLowerCase().capitalize() }.join("")
=> 1800FooDotBar

你的字符串总是可以很容易地拆分吗?我相信是的。它们来自于一个名字列表,所以我认为我应该总是能够在空格或标点符号上进行拆分。另一个例子是“FOO,BAR”。这应该变成“FooBar”。为什么只是“粗略地”?似乎正是他问的for@Don几乎没有经过测试,可能会减少一些冗长的内容:)