Java unflexibler String-Klassen-Teilstring

Geschrieben in ** JDK 1.8 **.

Teilzeichenfolge der Klasse String

Die String-Klasse verfügt über eine Teilstring-Methode, die einen Teil des Strings ausschneidet. Es werden zwei Typen entsprechend der Anzahl der Argumente ausgeschnitten.

Wenn es ein Argument gibt

** Definition **

    substring(int beginIndex)

Es schneidet die Zeichen nach beginIndex aus. Beachten Sie, dass der Index der Zeichenfolge von "0" zählt.

** Anwendungsbeispiel **

    String str = ("Doraemon");
    String cutStr = str.substring(2);
    System.out.println("Nach dem Schneiden:" + cutStr);

Ergebnis

Nach dem Schneiden: Emon

Die Zeichenfolge nach dem Zeichen "e" im angegebenen Index "2" wird ausgeschnitten.

Wenn es zwei Argumente gibt

** Definition **

    substring(int beginIndex, int endIndex)

Es schneidet die Zeichen nach "beginIndex" einschließlich der Zeichen von "endIndex-1" aus. ** Anwendungsbeispiel **

    String str = ("Doraemon");
    String cutStr = str.substring(2, 4);
    System.out.println("Nach dem Schneiden:" + cutStr);

Ergebnis

Nach dem Schneiden: Emo

Die Zeichenkette "Emo" vom angegebenen "beginIndex = 2" bis zum Zeichen "E" bei "endIndex -1 = 3" wird ausgeschnitten.

Das ist subtil

Wenn es zwei Argumente gibt und die Länge der Zeichenfolge kleiner als "endIndex -1" ist, wird eine Ausnahme ausgelöst.

Anwendungsfall

Geben Sie die Zeichenfolge aus, die auf dem Bildschirm angezeigt werden soll. Da es eine Begrenzung gibt, dass nur 4 Zeichen auf dem Bildschirm angezeigt werden können, möchte ich die Ausgabezeichenfolge auf 4 Zeichen beschränken. Wenn die Zeichenfolge weniger als 4 Zeichen umfasst, möchte ich sie so ausgeben, wie sie ist.

Code


    String str1 = ("Doraemon");
    String str2 = ("Nobita");
    String str3 = ("Sune Ehemann");

    List<String> sourceStrList = Arrays.asList(str1, str2, str3);
    List<String> outStrList = new ArrayList<>();

    for (String sourceStr : sourceStrList) {
        outStrList.add(sourceStr.substring(0, 4));
    }

    System.out.println("Nach dem Schneiden:" + outStrList);

Ergebnis

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4

Ja, eine Ausnahme ist aufgetreten. Hier haben "Nobita" und "Suneo" Indizes bis zu "2", daher sind sie Ausnahmen, da sie kleiner als "endIndex -1 = 3" sind. Dies ist problematisch, da die Zeichenlänge im Voraus überprüft werden muss, um das Problem zu lösen.

Gelöst mit substring in StringUtils

Wenn Sie den in "org.apache.commons.lang3.StringUtils" bereitgestellten "Teilstring" verwenden, können Sie dieses Problem lösen.

    substring(String str, int start, int end)

Der Index der Zeichenfolge, die in "str" ausgeschnitten werden soll, reicht von "start" bis "end -1".

Code

    String str1 = ("Doraemon");
    String str2 = ("Nobita");
    String str3 = ("Sune Ehemann");

    List<String> sourceStrList = Arrays.asList(str1, str2, str3);
    List<String> outStrList = new ArrayList<>();

    for (String sourceStr : sourceStrList) {
        outStrList.add(StringUtils.substring(sourceStr, 0, 4));
    }

    System.out.println("Nach dem Ausschneiden:" + outStrList);

Ergebnis

Nach dem Ausschneiden[Doraemo,Nobita,Sune Ehemann]

Sogar eine Zeichenfolge kleiner als "end --1 = 3" wird so ausgegeben, wie sie ist.

Referenz

java.lang String substring org.apache.commons.lang3 Class StringUtils substring

Recommended Posts

Java unflexibler String-Klassen-Teilstring
Informationen zur Java String-Klasse
Java-Memo-Teilzeichenfolge (Standardklasse)
Java-Teilzeichenfolge
Verschiedene Methoden der Java String Klasse
Java-Klassenmethoden
[Java] Klassenvererbung
Java-Scanner-Klasse
[Java] Auffüllen von Zeichenfolgen
[Java] Spickzettel für Datentyp / Zeichenkettenklasse
Java (abstrakte Klasse)
[Java] Verschachtelte Klasse
Anonyme Java-Klasse
Java-String-Verarbeitung
Über die Java-Klasse
String-Klassenmethoden
[Java] Abstrakte Klasse
[Java] Objektklasse
Geteilter String (Java)
Lokale Java-Klasse
Über die Klassenteilung (Java)
[Java] Über Singleton Class
[Java] Vergleich von Zeichenketten und && und ||
Mehrfacher Ersatz für Java-Zeichenfolgen
Überprüfung der Java-Innenklasse
Feld für den Java-Klassentyp
[Hinweis] Java: Zeichenfolgensuche
[Hinweis] Java: Zeichenkettenübersicht
Java-Programmierung (Klassenmethode)
Java-Programmierung (Klassenstruktur)
Über die abstrakte Klasse von Java
[Java] Umgang mit Zeichenketten (String-Klasse und StringBuilder-Klasse)
Java-Tipps - Modifikatoren der StataticUtility-Klasse
Reflexion über die Manipulation von Java-Strings
Länge des Java-Memos (Standardklasse)
[Implementierung] Java Prozessklassennotizen
Informationen zu Java Class Loader-Typen
Verwendung der Java-Klasse
[Java] Komparator der Collection-Klasse
Definition und Instanziierung von Java-Klassen
[Java] Über String und StringBuilder
Java-Lernnotiz (abstrakte Klasse)
Zusammenfassung der Java Math Klasse
[Java] Was ist Klassenvererbung?
Java-Klasse Variable Klassenmethode
[Einführung in Java] Umgang mit Zeichenfolgen (String-Klasse, StringBuilder-Klasse)
[Java-Grundlagen] Was ist Klasse?
[Java] Geschwindigkeitsvergleich der Zeichenfolgenkombination
Erstellen Sie mit JAVA eine unveränderliche Klasse
Warum werden Klassenvariablen benötigt? [Java]
Rufen Sie Kotlins versiegelte Klasse von Java aus an
[Java] Objektorientierte Syntaxklassenmethode / Argument
So zerlegen Sie eine Java-Klassendatei
Kotlin-Klasse zum Senden an Java-Entwickler
StringBuffer- und StringBuilder-Klasse in Java
So dekompilieren Sie eine Java-Klassendatei
Beliebiger Code zum Erstellen von Zeichenfolgen durch Java
Verschiedene Methoden der String-Klasse
Java (Klassentyp für Feld verwenden)