在groovy split collect中包含外来字符

在groovy split collect中包含外来字符,groovy,split,collect,Groovy,Split,Collect,我在将外国名称转换为大写/小写时遇到问题。。。 它似乎省略了外来字符。 你知道我该怎么解决这个问题吗 String str = "SÉBASTIEN DOL DE BRETAGNE"; return str.split(/[^\w]/).collect { it.toLowerCase().capitalize() }.join(" "); Current output: S Bastien Dol De Bretagne Desired output:

我在将外国名称转换为大写/小写时遇到问题。。。 它似乎省略了外来字符。 你知道我该怎么解决这个问题吗

String str = "SÉBASTIEN DOL DE BRETAGNE";
return str.split(/[^\w]/).collect { it.toLowerCase().capitalize() }.join(" ");

Current output: S Bastien Dol De Bretagne
Desired output: Sébastien Dol De Bretagne

我希望它能处理所有的外国字符,如瑞典语、法语等,但我有点不知所措了:-

你在分割非单词字符,这就是问题所在\w是[a-zA-Z_0-9]见,不包括É。这就解释了为什么在这两种情况下,这个字符都被用作分隔符

可以按空格或空格分隔:

//any version of these, specifying the delimiter
s.split(/ +/).collect { it.toLowerCase().capitalize() }.join(" ")
s.split(/\s+/).collect { it.toLowerCase().capitalize() }.join(" ")

以上两种方法都返回了您在非单词字符上拆分的Sébastien Dol De Bretagne,这就是问题所在\w是[a-zA-Z_0-9]见,不包括É。这就解释了为什么在这两种情况下,这个字符都被用作分隔符

可以按空格或空格分隔:

//any version of these, specifying the delimiter
s.split(/ +/).collect { it.toLowerCase().capitalize() }.join(" ")
s.split(/\s+/).collect { it.toLowerCase().capitalize() }.join(" ")

以上两种方法都返回了Sébastien Dol De Bretagne

您可以通过使用Apache Commons库轻松实现:


您可以查找不同的区域设置

您可以使用Apache Commons库轻松地进行查找:

您可以查找不同的区域设置

另一个选项:使用replaceAll替换所有非空白 人物。例如

String str = "SÉBASTIEN DOL DE BRETAGNE";
println str.replaceAll(/\S+/, { it.toLowerCase().capitalize() })
// → Sébastien Dol De Bretagne
另一个选项:使用replaceAll替换所有非空白 人物。例如

String str = "SÉBASTIEN DOL DE BRETAGNE";
println str.replaceAll(/\S+/, { it.toLowerCase().capitalize() })
// → Sébastien Dol De Bretagne

太棒了谢谢男人:-太棒了!!!!:-谢谢你,伙计:-