Stringverarbeitung mit Apache Commons Lang 3
1. Überblick
DieApache Commons Lang 3-Bibliothek bietet Unterstützung für die Manipulation von Kernklassen der Java-APIs. Diese Unterstützung umfasst Methoden zum Behandeln von Zeichenfolgen, Zahlen, Datumsangaben, Parallelität, Objektreflexion und vielem mehr.
Dieses Tutorial bietet nicht nur eine allgemeine Einführung in die Bibliothek, sondern zeigt auch Methoden der KlasseStringUtils, die zur Bearbeitung vonString-Instanzen verwendet wird.
2. Maven-Abhängigkeit
Um die Commons Lang 3-Bibliothek zu verwenden, ziehen Sie sie einfach mit der folgenden Abhängigkeit aus dem zentralen Maven-Repository:
org.apache.commons
commons-lang3
3.5
Sie finden die neueste Version dieser Bibliothekhere.
3. StringUtils
Die KlasseStringUtils bietet Methoden fürnull-sichere Operationen an Zeichenfolgen.
Für viele Methoden dieser Klasse sind entsprechende Methoden in der Klassejava.lang.String definiert, die nichtnull-sicher sind. Dieser Abschnitt konzentriert sich jedoch stattdessen auf mehrere Methoden, die keine Entsprechungen in der KlasseStringhaben.
4. DiecontainsAny-Methode
Die MethodecontainsAny prüft, ob ein bestimmtesString ein Zeichen im angegebenen Zeichensatz enthält. Dieser Zeichensatz kann in Form vonString oderchar Varargs übergeben werden.
Das folgende Codefragment veranschaulicht die Verwendung von zwei überladenen Varianten dieser Methode mit Ergebnisüberprüfung:
String string = "example.com";
boolean contained1 = StringUtils.containsAny(string, 'a', 'b', 'c');
boolean contained2 = StringUtils.containsAny(string, 'x', 'y', 'z');
boolean contained3 = StringUtils.containsAny(string, "abc");
boolean contained4 = StringUtils.containsAny(string, "xyz");
assertTrue(contained1);
assertFalse(contained2);
assertTrue(contained3);
assertFalse(contained4);
5. DiecontainsIgnoreCase-Methode
Die MethodecontainsIgnoreCase prüft, ob ein gegebenesString ein anderesString enthält, wobei die Groß- und Kleinschreibung nicht berücksichtigt wird.
Das folgende Codefragment überprüft, obString “example.com”“example” umfasst, wenn Groß- und Kleinbuchstaben ignoriert werden:
String string = "example.com";
boolean contained = StringUtils.containsIgnoreCase(string, "example");
assertTrue(contained);
6. DiecountMatches-Methode
Die MethodecounterMatches zählt, wie oft ein Zeichen oder eine Teilzeichenfolge in einem bestimmtenString. vorkommt
Das Folgende ist eine Demonstration dieser Methode, die bestätigt, dass‘w' viermal und“com” zweimal inString“welcome to www.example.com” vorkommt:
String string = "welcome to www.example.com";
int charNum = StringUtils.countMatches(string, 'w');
int stringNum = StringUtils.countMatches(string, "com");
assertEquals(4, charNum);
assertEquals(2, stringNum);
7. Methode zum Anhängen und Voranstellen
Die MethodenappendIfMissing undappendIfMissingIgnoreCase fügen ein Suffix an das Ende eines bestimmtenString an, wenn es nicht bereits mit einem der übergebenen Suffixe in Groß- und Kleinschreibung endet.
In ähnlicher Weise stellen die MethodenprependIfMissing undprependIfMissingIgnoreCase ein Präfix vor den Anfang eines bestimmtenString, wenn es nicht mit einem der übergebenen Präfixe beginnt.
Im folgenden Beispiel werden die MethodenappendIfMissing undprependIfMissing verwendet, um denString “example.com” ein Suffix und ein Präfix hinzuzufügen, ohne dass diese Affixe wiederholt werden:
String string = "example.com";
String stringWithSuffix = StringUtils.appendIfMissing(string, ".com");
String stringWithPrefix = StringUtils.prependIfMissing(string, "www.");
assertEquals("example.com", stringWithSuffix);
assertEquals("www.example.com", stringWithPrefix);
8. Falländerungsmethode
Die KlasseStringdefiniert bereits Methoden zum Konvertieren aller Zeichen einesStringin Groß- oder Kleinbuchstaben. Dieser Unterabschnitt zeigt nur die Verwendung von Methoden, die den Fall vonString auf andere Weise ändern, einschließlichswapCase,capitalize unduncapitalize.
Die MethodeswapCasetauscht den Fall einesString, aus, indem Groß- und Kleinbuchstaben in Kleinbuchstaben geändert werden:
String originalString = "example.COM";
String swappedString = StringUtils.swapCase(originalString);
assertEquals("example.com", swappedString);
Die Methodecapitalize konvertiert das erste Zeichen eines bestimmtenString in Großbuchstaben, wobei alle verbleibenden Zeichen unverändert bleiben:
String originalString = "example";
String capitalizedString = StringUtils.capitalize(originalString);
assertEquals("example", capitalizedString);
Die Methodeuncapitalize konvertiert das erste Zeichen der angegebenenString in Kleinbuchstaben, wobei alle verbleibenden Zeichen unverändert bleiben:
String originalString = "example";
String uncapitalizedString = StringUtils.uncapitalize(originalString);
assertEquals("example", uncapitalizedString);
9. Umkehrmethode
Die KlasseStringUtils definiert zwei Methoden zum Umkehren von Zeichenfolgen:reverse undreverseDelimited. Die Methodereverse ordnet alle Zeichen vonString in umgekehrter Reihenfolge neu an, während die MethodereverseDelimited Gruppen von Zeichen neu anordnet, die durch ein angegebenes Trennzeichen getrennt sind.
Das folgende Codefragment kehrt die Zeichenfolge“example” um und validiert das Ergebnis:
String originalString = "example";
String reversedString = StringUtils.reverse(originalString);
assertEquals("gnudleab", reversedString);
Bei der MethodereverseDelimitedwerden Zeichen in Gruppen anstatt einzeln umgekehrt:
String originalString = "www.example.com";
String reversedString = StringUtils.reverseDelimited(originalString, '.');
assertEquals("com.example.www", reversedString);
10. Dierotate()-Methode
Dierotate()-Methode verschiebt die Zeichen vonString kreisförmig um eine Anzahl von Positionen. Das folgende Codefragment verschiebt alle Zeichen der vier Positionen vonString “example”nach rechts und überprüft das Ergebnis:
String originalString = "example";
String rotatedString = StringUtils.rotate(originalString, 4);
assertEquals("dungbael", rotatedString);
11. Diedifference-Methode
Diedifference-Methode vergleicht zwei Zeichenfolgen und gibt den Rest der zweitenString, ab der Position zurück, an der sie sich von der ersten unterscheidet. Das folgende Codefragment vergleicht zweiStrings: “example Tutorials” und“example Courses” in beide Richtungen und validiert das Ergebnis:
String tutorials = "example Tutorials";
String courses = "example Courses";
String diff1 = StringUtils.difference(tutorials, courses);
String diff2 = StringUtils.difference(courses, tutorials);
assertEquals("Courses", diff1);
assertEquals("Tutorials", diff2);
12. Fazit
Dieses Tutorial führt in die String-Verarbeitung in Apache Commons Lang 3 ein und geht auf die Haupt-APIs ein, die wir aus der BibliotheksklasseStringUtilsverwenden können.
Wie immer ist die Implementierung aller oben angegebenen Beispiele und Codefragmente inthe GitHub project zu finden.