我有一个String str,它可以包含如下所示的值列表。我希望字符串中的第一个字母是大写的,如果下划线出现在字符串中,那么我需要删除它,并需要将其后面的字母作为大写。剩下的所有字母我希望它是小写的。
""
"abc"
"abc_def"
"Abc_def_Ghi12_abd"
"abc__de"
"_"
Output:
""
"Abc"
"AbcDef"
"AbcDefGhi12Abd"
"AbcDe"
""
答案 0 :(得分:1)
好吧,如果没有告诉我们你将任何的努力放到这个问题中,这将是有点模糊的。
我在这里看到两种可能性:
创建StringBuilder
,遍历字符串并跟踪您是否
并在将当前字符附加到StringBuilder
实例之前对其进行适当操作。
答案 1 :(得分:1)
_
替换为空格(str.replace("_", " ")
)WordUtils.capitalizeFully(str);
(来自commons-lang)str.replace(" ", "")
)答案 2 :(得分:0)
您可以使用以下基于正则表达式的代码:
public static String camelize(String input) {
char[] c = input.toCharArray();
Pattern pattern = Pattern.compile(".*_([a-z]).*");
Matcher m = pattern.matcher(input);
while ( m.find() ) {
int index = m.start(1);
c[index] = String.valueOf(c[index]).toUpperCase().charAt(0);
}
return String.valueOf(c).replace("_", "");
}
答案 3 :(得分:0)
在java.util.regex包中使用Pattern / Matcher:
对于数组中的每个字符串,执行以下操作:
StringBuffer output = new StringBuffer();
Matcher match = Pattern.compile("[^|_](\w)").matcher(inStr);
while(match.find()) {
match.appendReplacement(output, matcher.match(0).ToUpper());
}
match.appendTail(output);
// Will have the properly capitalized string.
String capitalized = output.ToString();
正则表达式查找字符串的开头或下划线“[^ | _]” 然后将以下字符放入“(\ w)”
组中然后代码遍历输入字符串中的每个匹配项,将第一个满意的组大写。