我在小写单词上使用toCamelCase函数来创建标题。我想忽略已经大写的单词或字母。
请建议我该如何解决这个问题?
目前我正在使用此
CommonVariables.toCamelCase("MY_STRING");
以及
以下的这些功能public static String toCamelCase(String s)
{
String[] parts = s.split(" ");
String camelCaseString = "";
for (String part : parts)
{
if(camelCaseString.equals(""))
{
camelCaseString = toProperCase(part);
}
else
{
camelCaseString = camelCaseString+" "+toProperCase(part);
}
}
return camelCaseString;
}
public static String toProperCase(String s)
{
return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}
提前致谢!
答案 0 :(得分:0)
您可以更改toProperCase
功能以保留尾随字母的大小写:
public static String toProperCase(String s) {
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
示例:
System.out.println(toCamelCase("to camel case with UPPER_CASE word"));
// To Camel Case With UPPER_CASE Word
此外,与问题无关,您可以简化toCamelCase
功能:
public static String toCamelCase(String s) {
return Stream.of(s.split(" "))
.map(w -> toProperCase(w))
.collect(Collectors.joining(" "));
}
最后,请注意,这不是真正的“camel case”,而更像是“title case”。对于正确的驼峰案例,您可以使用Collectors.joining("")
代替。
答案 1 :(得分:0)
我认为您只需要调整toProperCase(String s)
来检查您的单词是否已经大写,例如像这样:
public static String toProperCase(String s)
{
// You might want to check if the string is empty before
if(Character.isUpperCase(s.charAt(0))) {
return s;
}
return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}
如果原始字符串已经以大写字母开头,则返回原始字符串。
然而,没有必要重新发明轮子。 Apache Commons已经有一个名为WordUtils的类,可以完全满足您的需求:
WordUtils.capitalize("i am FINE") = "I Am FINE"