我有一个字符串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"
答案 0 :(得分:1)
答案 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将虚线子字符串转换为驼峰字符串。