删除Java字符串中的短划线并在短划线后大写字符

时间:2017-08-06 18:19:14

标签: java string

我有一个字符串nba-west-teams blazers,我希望将字符串转换为nbaWestTeams blazers之类的格式。基本上,我想删除所有破折号并用短划线替换破折号后的字符。

我知道我可以使用String方法replaceAll来删除所有破折号,但是如何在破折号和大写字母后获取字符呢?

// Input
String withDashes = "nba-west-teams blazers"

String removeDashes = withDashes.replaceAll(....?)

// Expected conversion
String withoutDashes = "nbaWestTeams blazers"

4 个答案:

答案 0 :(得分:1)

查看StringBuilder类的indexOfreplace方法。 StringBuilder允许快速编辑字符串。 完成后使用toString

如果您需要更多帮助,请发表评论。

答案 1 :(得分:1)

您可以使用带有正则表达式的模式,例如\-([a-z])

String str = "nba-west-teams blazers";
String regex = "\\-([a-z])";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);

while (matcher.find()) {                                                
    str = str.replaceFirst(matcher.group(), matcher.group(1).toUpperCase());
}

System.out.println(str);//Output = nbaWestTeams blazers

因此它将在破折号后匹配第一个字母并将匹配的字母替换为高位字母

答案 2 :(得分:1)

您可以遍历字符串,当找到连字符时,只需跳过连字符并将下一个字符转换为大写。您可以使用StringBuilder存储部分结果,如下所示:

public static String toCamelCase(String str) {
    // if the last char is '-', lets set the length to length - 1 to avoid out of bounds
    final int len = str.charAt(str.length() - 1) == '-' ? str.length() - 1 : str.length();
    StringBuilder builder = new StringBuilder(len);

    for (int i = 0; i < len; ++i) {
        char c = str.charAt(i);
        if (c == '-') {
            ++i;
            builder.append(Character.toUpperCase(str.charAt(i)));
        } else {
            builder.append(c);
        }
    }
    return builder.toString();
}

答案 3 :(得分:0)

您可以在空格处拆分字符串,并使用https://github.com/google/guava/wiki/StringsExplained#caseformat将虚线子字符串转换为驼峰字符串。