1 回答

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));
添加回答
舉報