Java Language Modifica del caso di caratteri all'interno di una stringa


Esempio

Il tipo String fornisce due metodi per la conversione di stringhe tra maiuscole e minuscole:

  • toUpperCase per convertire tutti i caratteri in maiuscolo
  • toLowerCase per convertire tutti i caratteri in lettere minuscole

Questi metodi restituiscono entrambe le stringhe convertite come nuove istanze String : gli oggetti String originali non vengono modificati perché String è immutabile in Java. Vedi questo per saperne di più sull'immutabilità: Immutabilità di stringhe in Java

String string = "This is a Random String";
String upper = string.toUpperCase();
String lower = string.toLowerCase();

System.out.println(string);   // prints "This is a Random String"
System.out.println(lower);    // prints "this is a random string"
System.out.println(upper);    // prints "THIS IS A RANDOM STRING"

I caratteri non alfabetici, come cifre e segni di punteggiatura, non sono influenzati da questi metodi. Si noti che questi metodi possono anche trattare in modo errato determinati caratteri Unicode in determinate condizioni.


Nota : questi metodi sono sensibili alle impostazioni internazionali e potrebbero produrre risultati imprevisti se utilizzati su stringhe che devono essere interpretate indipendentemente dalle impostazioni internazionali. Gli esempi sono identificatori di linguaggio di programmazione, chiavi di protocollo e tag HTML .

Ad esempio, "TITLE".toLowerCase() in una locale turca restituisce " tıtle ", dove ı (\u0131) è il carattere LATIN SMALL LETTER DOTLESS I. Per ottenere risultati corretti per le stringhe insensibili della locale, passare Locale.ROOT come parametro al metodo di conversione caso corrispondente (ad es toLowerCase(Locale.ROOT) o toUpperCase(Locale.ROOT) ).

Anche se l'uso di Locale.ENGLISH è corretto anche per la maggior parte dei casi, il modo in cui la lingua è invariata è Locale.ROOT .

Un elenco dettagliato dei caratteri Unicode che richiedono un involucro speciale può essere trovato sul sito Web del Consorzio Unicode .

Modifica del caso di un carattere specifico all'interno di una stringa ASCII:

Per cambiare il caso di un carattere specifico di una stringa ASCII, è possibile utilizzare l'algoritmo seguente:

passi:

  1. Dichiara una stringa.
  2. Inserisci la stringa.
  3. Converti la stringa in un array di caratteri.
  4. Inserisci il carattere che deve essere cercato.
  5. Cerca il personaggio nell'array di caratteri.
  6. Se trovato, controlla se il carattere è in minuscolo o maiuscolo.
    • Se è maiuscolo, aggiungi 32 al codice ASCII del carattere.
    • Se Minuscolo, sottrai 32 dal codice ASCII del carattere.
  7. Cambia il carattere originale dall'array di caratteri.
  8. Converti nuovamente l'array di caratteri nella stringa.

Voilà, il caso del personaggio è cambiato.

Un esempio del codice dell'algoritmo è:

Scanner scanner = new Scanner(System.in);
System.out.println("Enter the String");
String s = scanner.next();
char[] a = s.toCharArray();
System.out.println("Enter the character you are looking for");
System.out.println(s);
String c = scanner.next();
char d = c.charAt(0);

for (int i = 0; i <= s.length(); i++) {
    if (a[i] == d) {
        if (d >= 'a' && d <= 'z') {
            d -= 32;
        } else if (d >= 'A' && d <= 'Z') {
            d += 32;
        }
        a[i] = d;
        break;
    }
}
s = String.valueOf(a);
System.out.println(s);