我已经跟随PERL一线。该Perl RegEx只是将给定句子的所有单词的首字母大写。$val =~ s/\b(.)(.*?)\b/uc($1).$2/eg;输入:"united states corp"输出"United States Corp"但是,我需要在JAVA中实现相同的功能。我正在关注。String INPUT="united states corp"Pattern p = Pattern.compile("\\b(.)(.*?)\\b");Matcher m = p.matcher(INPUT);if (m.find()) { INPUT = m.replaceAll(m.group(1).toUpperCase() + m.group(2));}输入:"United States Corp".输出:"UnitedUnitedUnitedUnitedUnited"谢谢。
1 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
要匹配第一个小写字母的单词(为了不匹配已经大写的单词),可以使用\b\p{Ll}regex并使用Matcher#appendReplacement()method来操作匹配:
String INPUT="united states corp";
Pattern p = Pattern.compile("\\b\\p{Ll}");
StringBuffer result = new StringBuffer();
Matcher m = p.matcher(INPUT);
while (m.find()) {
m.appendReplacement(result, m.group().toUpperCase());
}
m.appendTail(result);
System.out.println(result.toString()); // => United States Corp
参见Java演示。
根据Java Matcher类文档:
的appendReplacement和appendTail方法可以串联使用,以便收集的结果到一个现有的字符串缓冲区
因此,如果您使用当前的正则表达式,"\\b(.)(.*?)\\b"则需要将while (m.find())主体替换为
m.appendReplacement(result, m.group(1).toUpperCase() + m.group(2));
添加回答
举报
0/150
提交
取消