忽略toCamelCase()中的大写单词

时间:2018-02-14 11:34:28

标签: java

我在小写单词上使用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();
    }

提前致谢!

2 个答案:

答案 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"