タイトルケースJavaヘルプのフォーマット名
-
11-12-2019 - |
質問
だから私は:にJavaコードを書かなければなりません。
- 入力を入力
- タイトルケースの形式名
- 入力第2名
- タイトルケースの形式名
- アルファベット順に表示します
Java文字クラスには、islowercase()、isuppercase、tolowercase()、toutpercase()のメソッドがあることを知っています。文字列ごとの文字の確認に使用できます。最初の文字が小文字の場合は、それを大文字に変換し、それぞれの各文字について、文字が大文字の場合は小文字に変換します。
問題は私が各手紙をチェックする方法ですか? どのような変数と文字列が含まれているべきですか? あなたは助けてもらえますか?
解決
文字列操作に対処するときにStringBuilder
を使用する必要があります。このように、オブジェクトの数を削減します。
StringBuilder s1 = new StringBuilder("rohit");
StringBuilder s2 = new StringBuilder("jain");
s1.replace(0, s1.length(), s1.toString().toLowerCase());
s2.replace(0, s2.length(), s2.toString().toLowerCase());
s1.setCharAt(0, Character.toTitleCase(s1.charAt(0)));
s2.setCharAt(0, Character.toTitleCase(s2.charAt(0)));
if (s1.toString().compareTo(s2.toString()) >= 0) {
System.out.println(s2 + " " + s1);
} else {
System.out.println(s1 + " " + s2);
}
. 他のヒント
最初の文字を大文字に変換してから、残りの文字列を小文字にします。
String name = "jOhN";
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
System.out.println(name); // John
. 文字列クラスのみを使用して文字列を通過するには、文字列内の各文字を繰り返します。
String s = "tester";
int size = s.length(); // length() is the number of characters in the string
for( int i = 0; i < size; i++) {
// s.charAt(i) gets the character at the ith code point.
}
.
この質問答え:文字列を「変更する」方法 - できません。 StringBuilderクラスは、特定のインデックスで文字を編集するための便利な方法を提供します。
すべての名前が正しく大文字になっていることを確認したいように見えます。スペースが大文字になった後の文字列と文字。
リストをアルファベット順にするには、すべての入力名をArrayListまたは他のコレクションオブジェクトに格納して、コンパレータを実装し、それをCollections.Sort()に渡すコンパレータを作成します。同等のVSコンパレータの質問
これはそれを修正すべきです
List<String> nameList = new ArrayList<String>();
nameList.add(titleCase("john smith"));
nameList.add(titleCase("tom cruise"));
nameList.add(titleCase("johnsmith"));
Collections.sort(nameList);
for (String name : nameList) {
System.out.println("name=" + name);
}
public static String titleCase(String realName) {
String space = " ";
String[] names = realName.split(space);
StringBuilder b = new StringBuilder();
for (String name : names) {
if (name == null || name.isEmpty()) {
b.append(space);
continue;
}
b.append(name.substring(0, 1).toUpperCase())
.append(name.substring(1).toLowerCase())
.append(space);
}
return b.toString();
}
. String
にはメソッドtoCharArray
その文字の新しく割り当てられたchar[]
を返します。String
sは不変、アレイの要素を再割り当てすることができることを忘れないでください。
同様に、String
は、新しく作成されたchar[]
の文字を表すString
を取ります。
それでもこれらを組み合わせることは、String
からchar[]
に取得され、char[]
を変更し、新しいString
に戻る方法があります。
これは任意の数の方法で達成することができます。そのほとんどは要件の詳細に戻ります。
しかし基本的な前提は同じです。String
は不変(内容は変更できません)が、String
の文字を抽出し、最初の文字を大文字に変換し、String
アレイから新しいchar
を再構成します。
すでに指摘されているように、これは相対的な単純です。
あなたがする必要があるかもしれない他のものは、単一のパスで複数の名前(最初、最後)を処理することです。繰り返しますが、これは比較的簡単です。困難な部分は、複数の条件で文字列を分割する必要があるかもしれません、それから正規表現に頼る必要があるかもしれません。
これは非常に簡単な例です。
String name = "this is a test";
String[] parts = name.split(" ");
StringBuilder sb = new StringBuilder(64);
for (String part : parts) {
char[] chars = part.toLowerCase().toCharArray();
chars[0] = Character.toUpperCase(chars[0]);
sb.append(new String(chars)).append(" ");
}
name = sb.toString().trim();
System.out.println(name);
.