Java中是否内置了一个函数,使字符串中每个单词的第一个字符大写,而不影响其他字符?
例子:
乔恩·斯基特->乔恩·斯基特
miles o'Brien -> miles o'Brien (B仍然是大写,这排除了Title Case)
老麦当劳->
*(老麦当劳也会被发现,但我不指望它有那么聪明。)
快速浏览一下Java字符串文档就会发现只有toUpperCase()和toLowerCase(),它们当然没有提供所需的行为。当然,谷歌的结果主要是这两个函数。它看起来像一个已经被发明出来的轮子,所以问一下也无妨,这样我以后就可以用它了。
来自Java 9+
你可以像这样使用String::replaceAll:
public static void upperCaseAllFirstCharacter(String text) {
String regex = "\\b(.)(.*?)\\b";
String result = Pattern.compile(regex).matcher(text).replaceAll(
matche -> matche.group(1).toUpperCase() + matche.group(2)
);
System.out.println(result);
}
例子:
upperCaseAllFirstCharacter("hello this is Just a test");
输出
Hello This Is Just A Test
我做了这个小类,可以用来大写一个句子中的每个单词。如果不是空格,可以更改字符串中的单词分隔符。
package com.ecnews.ecnews_v01.Helpers;
public class Capitalize {
String sentence;
String separator = " ";
public Capitalize(String sentence) {
this.sentence = sentence;
}
public void setSeparator(String separator) {
this.separator = separator;
}
public String getCapitalized() {
StringBuilder capitalized = new StringBuilder("");
for (String word : sentence.split(separator)) {
capitalized.append(separator+Character.toUpperCase(word.charAt(0)) + word.substring(1));
}
return capitalized.toString().trim();
}
}
例子:
String sourceName = new Capitalize("this is a test"). get资本化();
sourceName将是“This Is A Test”