文字列を Title Case 形式に変換する組み込みメソッドはありますか?
21 に答える
Apache Commons StringUtils.capitalize() or Commons Text WordUtils.capitalize()
e.g: WordUtils.capitalize("i am FINE") = "I Am FINE"
from WordUtils doc
Java の String クラスには、capitalize() または titleCase() メソッドはありません。次の 2 つの選択肢があります。
- commons lang string utilsを使用します。
StringUtils.capitalize(null) = null
StringUtils.capitalize("") = ""
StringUtils.capitalize("cat") = "Cat"
StringUtils.capitalize("cAt") = "CAt"
StringUtils.capitalize("'cat'") = "'cat'"
- (さらに別の) 静的ヘルパー メソッド toTitleCase() を書き込む
実装例
public static String toTitleCase(String input) {
StringBuilder titleCase = new StringBuilder(input.length());
boolean nextTitleCase = true;
for (char c : input.toCharArray()) {
if (Character.isSpaceChar(c)) {
nextTitleCase = true;
} else if (nextTitleCase) {
c = Character.toTitleCase(c);
nextTitleCase = false;
}
titleCase.append(c);
}
return titleCase.toString();
}
テストケース
System.out.println(toTitleCase("string"));
System.out.println(toTitleCase("another string"));
System.out.println(toTitleCase("YET ANOTHER STRING"));
出力:
弦 別の文字列 まだ別の文字列
解決策に関する私の意見を提出できれば...
次の方法は、dfa が投稿したものに基づいています。次の大きな変更を行います (これは、当時私が必要としていたソリューションに適しています): 入力文字列のすべての文字を強制的に小文字にしますが、その直前に「実用的な区切り文字」が続く場合を除きます。大文字。
私のルーチンの主な制限は、「タイトルの大文字と小文字」がすべてのロケールで一様に定義され、私が使用したのと同じ大文字と小文字の規則で表されると仮定しているため、その点で dfa のコードよりも役に立たないことです。
public static String toDisplayCase(String s) {
final String ACTIONABLE_DELIMITERS = " '-/"; // these cause the character following
// to be capitalized
StringBuilder sb = new StringBuilder();
boolean capNext = true;
for (char c : s.toCharArray()) {
c = (capNext)
? Character.toUpperCase(c)
: Character.toLowerCase(c);
sb.append(c);
capNext = (ACTIONABLE_DELIMITERS.indexOf((int) c) >= 0); // explicit cast not needed
}
return sb.toString();
}
テスト値
文字列
マーティン・オマリー
ジョン・ウィルクス・ブース
まだ別の文字列
出力
文字列
マーティン・オマリー
ジョン・ウィルクスブース
まだ別の文字列
Apache Commons のWordUtils.capitalizeFully()を使用します。
WordUtils.capitalizeFully(null) = null
WordUtils.capitalizeFully("") = ""
WordUtils.capitalizeFully("i am FINE") = "I Am Fine"
次のように apache commons lang を使用できます。
WordUtils.capitalizeFully("this is a text to be capitalize")
ここで Java ドキュメントを見つけることができます: WordUtils.capitalizeFully Java ドキュメント
世界の間のスペースを削除したい場合は、次を使用できます。
StringUtils.remove(WordUtils.capitalizeFully("this is a text to be capitalize")," ")
String StringUtils.remove Java docの Java ドキュメントを見つけることができます
この助けを願っています。
これは、snake_case を lowerCamelCase に変換するために私が書いたものですが、要件に基づいて簡単に調整できます
private String convertToLowerCamel(String startingText)
{
String[] parts = startingText.split("_");
return parts[0].toLowerCase() + Arrays.stream(parts)
.skip(1)
.map(part -> part.substring(0, 1).toUpperCase() + part.substring(1).toLowerCase())
.collect(Collectors.joining());
}
これは古いものであることは知っていますが、簡単な答えはありません。コーディングにこの方法が必要だったので、ここに追加しました。使いやすいです。
public static String toTitleCase(String input) {
input = input.toLowerCase();
char c = input.charAt(0);
String s = new String("" + c);
String f = s.toUpperCase();
return f + input.substring(1);
}
このメソッドを使用して、文字列をタイトル ケースに変換します。
static String toTitleCase(String word) {
return Stream.of(word.split(" "))
.map(w -> w.toUpperCase().charAt(0)+ w.toLowerCase().substring(1))
.reduce((s, s2) -> s + " " + s2).orElse("");
}
あなたはとてもうまく使うことができます
org.apache.commons.lang.WordUtils
また
ケースフォーマット
Google の API から。
文字列をタイトルケースに変換する最も簡単な方法は、googles パッケージ org.apache.commons.lang.WordUtils を使用することです。
System.out.println(WordUtils.capitalizeFully("tHis will BE MY EXAMple"));
この結果になります
これは私の例です
「capitalizeFully」という名前が付けられた理由はわかりません。実際、関数は完全な大文字の結果を実行していませんが、とにかく、それが必要なツールです。
申し訳ありませんが、私は初心者なので、コーディングの習慣は最悪です!
public class TitleCase {
String title(String sent)
{
sent =sent.trim();
sent = sent.toLowerCase();
String[] str1=new String[sent.length()];
for(int k=0;k<=str1.length-1;k++){
str1[k]=sent.charAt(k)+"";
}
for(int i=0;i<=sent.length()-1;i++){
if(i==0){
String s= sent.charAt(i)+"";
str1[i]=s.toUpperCase();
}
if(str1[i].equals(" ")){
String s= sent.charAt(i+1)+"";
str1[i+1]=s.toUpperCase();
}
System.out.print(str1[i]);
}
return "";
}
public static void main(String[] args) {
TitleCase a = new TitleCase();
System.out.println(a.title(" enter your Statement!"));
}
}