Domanda

Quindi devo scrivere un codice Java su:

    .
  • Inserisci un nome
  • nome in formato nella cassa del titolo
  • Ingresso Secondo nome
  • nome in formato nella cassa del titolo
  • Visuali in ordine alfabeto

    So che la classe del personaggio Java ha i metodi Isowerase (), Isuppercase, Tolowercase () e TOUPPercase (), che è possibile utilizzare nella revisione di una stringa, carattere per personaggio.Se il primo carattere è in minuscolo, convertirlo in maiuscolo e per ogni carattere successivo, se il carattere è maiuscolo, convertirlo in minuscolo.

    La domanda è come controllo ogni lettera? Che tipo di variabili e stringhe dovrebbero essere contenute? Puoi aiutare?

È stato utile?

Soluzione

Dovresti usare StringBuilder, quando si tratta con la manipolazione delle stringhe .. In questo modo, si finisce per creare il minor numero di oggetti.

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);
}
.

Altri suggerimenti

È possibile convertire il primo carattere in maiuscolo, quindi in minuscolo il resto della stringa:

String name = "jOhN";
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); 
System.out.println(name); // John
.

Per le stringhe di attraversamento utilizzando solo la classe di stringa, iterano attraverso ciascun carattere in una stringa.

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.
}
.

Questa domanda risposte Come "cambiare" una stringa - non puoi. La classe StringBuilder fornisce metodi convenienti per la modifica dei caratteri in indici specifici però.

Sembra che tu voglia assicurarsi che tutti i nomi siano adeguatamente capitalizzati, ad esempio: "Martin Ye" -> "Martin Ye", nel qual caso vorrai attraversare l'input della stringa per assicurarsi che il primo carattere del Stringa e personaggi dopo che uno spazio è capitalizzato.

Per l'elenco di alfabetizzazione di un elenco, suggerisco di memorizzare tutti i nomi immutati a un arrayList o ad un altro oggetto di raccolta, creando un comparatore che implementa il comparatore e che passa a Collections.Sort () ... vedere Questa domanda sul comparatore VS comparatore.

Questo dovrebbe risolverlo

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 ha un metodo toCharArray che restituisce un char[] di nuova assegnata dei suoi caratteri.Ricorda che mentre Strings sono immutabile , elementi di array possono essere riassegnati. .

Allo stesso modo, String ha un costruttore che prende un char[] che rappresenta i caratteri del String di nuova creato.

Quindi combinando questi, hai un modo per ottenere da un String a un char[], modificare il char[] e tornare a un nuovo String.

Questo può essere raggiunto in qualsiasi numero di modi, la maggior parte dei quali verrà ai dettagli dei requisiti.

Ma la premessa di base è la stessa.String è immutabile (i contenuti non possono essere modificati), quindi è necessario via per estrarre i caratteri del String, convertire il primo carattere in maiuscolo e ricostituire un nuovo String dall'array char.

Come è già stato sottolineato, questo è relativo semplice.

L'altra cosa che potrebbe essere necessaria, è gestire più nomi (prima, ultima) in un singolo passaggio.Ancora una volta, questo è relativamente semplice.La parte difficile è quando potresti aver bisogno di dividere una stringa su più condizioni, allora dovrai ricorrere a un'espressione regolare.

Ecco un esempio molto semplice.

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);
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top