Introduksjon til StringUtils

StringUtils er den mest brukte Apache Commons-klassen. Den inneholder ulike verktøy og metoder som hjelper utviklere med å unngå å skrive standard eller rett og slett uhåndterlig kode for grunnleggende operasjoner.

Mange av metodene i StringUtils -klassen har sine java.lang.String- ekvivalenter , men i motsetning til java.lang.String -metodene er de null-sikre. Dette betyr at et NullPointerException ikke blir kastet på det mest uventede øyeblikket.

Apache Commons inneholder en rekke metoder, og vi skal se på noen av de mest brukte.

Liste over StringUtils-metoder:

er tom() Sjekker om en streng er tom
er lik() Sammenligner strenger
sammenligne() Sammenligner strenger
oversikt over() Finne en delstreng i en streng
lastIndexOf() Finne en delstreng i en streng
inneholder() Sjekker om en delstreng er i en streng
containsIgnoreCase() Sjekker for forekomsten av en delstreng i en streng, ignorerer store og små bokstaver
inneholder enhver() Sjekker om en delstreng forekommer hvor som helst i en streng
inneholder Ingen() Sjekker om en delstreng forekommer hvor som helst i en streng
inneholderKun() Sjekker om en delstreng er i en streng
delstreng() Får en understreng
dele() Dele en streng i understrenger
bli med() sette sammen understrenger
fjerne() Fjerne en understreng
erstatte() Erstatt understreng
countMatches() Teller antall kamper

StringUtils.isEmpty() og StringUtils.isBlank()

Begge metodene brukes til å sjekke om en streng inneholder tekst. De returnerer sann hvis strengen er virkelig tom. I tillegg vil isBlank() også returnere true hvis strengen bare inneholder mellomrom.

De har også sine egne inverse metoder: isNotEmpty() og isNotBlank() .

La oss se hvordan du kan bruke isEmpty() sammen med java.lang.String.isEmpty() -motparten , samt isBlank() :

String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t   \n";

if(StringUtils.isEmpty(emptyValue)) {
   System.out.println("emptyValue is emptyValue");
}

if(StringUtils.isBlank(blankValue)) {
   System.out.println("blankValue is blankValue");
}

if(!nullValue.isEmpty()) {
   System.out.println("nullString isn't null");
}

Det er tre variabler av typen String her . En peker på null , den andre er ikke null , men har ikke noe innhold (en tom streng), og den tredje er ikke tom, men vil skrive ut et tomt resultat.

Å kjøre denne koden resulterer i:

emptyValue is emptyValue
blankValue is blankValue
Exception in thread "main" java.lang.NullPointerException

Metoden isEmpty() innebygd i java.lang.String er ikke null sikker . Du vil lett få et NullPointerException hvis du prøver å sjekke om det er tomt, fordi du kaller metoden på en nullreferanse . Det vil være nødvendig å sjekke på forhånd om referansen er null:

String nullValue = null;
String emptyValue = "";
String blankValue = "\n \t   \n";

if(StringUtils.isEmpty(emptyValue)) {
   System.out.println("emptyValue is emptyValue");
}

if(StringUtils.isBlank(blankValue)) {
   System.out.println("blankValue is blankValue");
}

if(nullValue != null && !nullValue.isEmpty()) {
   System.out.println("nullString isn't null");
}

Nå resulterer dette i:

emptyValue is emptyValue
blankValue is blankValue

Og hvis vi tester disse metodene pånullString:

String nullValue = null;

if(StringUtils.isEmpty(nullValue)) {
   System.out.println("nullValue is emptyValue");
}

if(StringUtils.isBlank(nullValue)) {
   System.out.println("nullValue is blankValue");
}

Da får vi:

nullValue is emptyValue
nullValue is blankValue

StringUtils- metodene er null- sikre og gir det forventede resultatet selv om de passeres null .

StringUtils.equals()

Denne metoden sammenligner to strenger og returnerer sann hvis de er identiske eller hvis begge referansene peker på null , men vær oppmerksom på at denne metoden skiller mellom store og små bokstaver.

La oss se hvordan det fungerer:

System.out.println(StringUtils.equals(null, null));
System.out.println(StringUtils.equals(null, "some information"));
System.out.println(StringUtils.equals("some information", null));
System.out.println(StringUtils.equals("some information",  "some information"));
System.out.println(StringUtils.equals("some additional information", "some information"));

Resultat:

true
false
false
true
false

For å sammenligne equals() -metoden fra StringUtils med java.lang.String.equals() :

String nullValue = null;

System.out.println(StringUtils.equals(nullValue, null));
System.out.println(StringUtils.equals(nullValue, "some information"));

System.out.println(nullValue.equals(null));
System.out.println(nullValue.equals("some information"));

Dette bringer deg tilbake til:

true
false
Exception in thread "main" java.lang.NullPointerException

Igjen, å kalle en metode på en nullreferanse resulterer i en NullPointerException , og du må sjekke om referansevariabelen er null før du bruker den.

StringUtils.compare()

Erklæringen om denne metoden ser slik ut:

public static int compare(final String str1, final String str2)

Denne metoden sammenligner to strenger leksikografisk, slik java.lang.String.compareTo() -metoden gjør , og returnerer:

  • 0 hvis str1 er lik str2 (eller begge er null)
  • Verdien er mindre enn 0 hvis str1 er mindre enn str2
  • Verdi større enn 0 hvis str1 er større enn str2

Den leksikografiske rekkefølgen er ordbokrekkefølgen. La oss se hvordan vi kan bruke dette i programmet vårt:

System.out.println(StringUtils.compare(null, null));
System.out.println(StringUtils.compare(null , "codeGym"));
System.out.println(StringUtils.compare("codeGym", null));
System.out.println(StringUtils.compare("codeGym", "CODEGYM"));
System.out.println(StringUtils.compare("codeGym", "codeGym"));

Vi får:

0
-1
1
32
0

Merk: En nullverdi anses som mindre enn en ikke- nullverdi . To nullverdier regnes som like.

Sjekker om en streng inneholder en annen understreng

For å gjøre dette har StringUtils 5 metoder:

  • inneholder()
  • containsIgnoreCase()
  • inneholder enhver()
  • inneholder Ingen()
  • inneholderKun()

Metoden contains() returnerer true eller false avhengig av om søkesekvensen er inneholdt i en annen sekvens eller ikke.

Hvis null sendes til en slik metode , vil den returnere false . Hvis ikke- null sendes , vil metoden ganske enkelt kalle java.lang.String.indexOf(String str) på det beståtte objektet.

Eksempler:

String value = "CodeGym is cool";

System.out.println(StringUtils.contains(null, "a"));
System.out.println(StringUtils.contains(value, "CodeGym"));
System.out.println(StringUtils.contains(value, "C++"));
System.out.println(StringUtils.contains(value, "codegym"));

Metoden skiller mellom store og små bokstaver, så det siste kallet vil også returnere false :

false
true
false
false

Metoden containsAny() returnerer true hvis strengen som ble sendt som det første argumentet inneholder minst én av understrengene som ble sendt i 2-N-argumentene.

Eksempel:

String value = "CodeGym is cool";
System.out.println(StringUtils.containsAny(value, "cool", "c00l", "bro", "hello"));

Vil vise:

true

Denne metoden skiller også mellom store og små bokstaver.

containsNone()-metoden

Når du skal sjekke at en bestemt streng ikke inneholder noe fra listen, kan du bruke containsNone()- metoden . Den første parameteren er en streng, og de følgende parameterne er strenger som ikke skal være i målvasken.

Eksempel:

String s = "CodeGym is cool";
System.out.println(StringUtils.containsNone(s, 'g', 'a'));

Konsoll utgang:

false

Arbeid med delstrenger

Å jobbe med delstrenger ligner på å jobbe med metoder i String- klassen :

substring(String str, int start)
substring (String str, int start, int end)

Disse metodene returnerer en delstreng fra strengen str . Strengen er gitt av to indekser: start og slutt . Og som vanlig i Java er det siste tegnet i serien end-1 . Hva er fordelen med disse metodene?

Hvis du sender null til en slik metode , vil den ganske enkelt returnere null i stedet for å kaste et unntak. Disse metodene støtter negative indeksverdier. I dette tilfellet betraktes strengen som en lukket sløyfe. Det siste tegnet etterfølges av det første, og så videre.

La oss se hvordan vi kan bruke det:

System.out.println(StringUtils.substring("lets java", 2, 6));
System.out.println(StringUtils.substring("lets java", -8));
System.out.println(StringUtils.substring(null, 3));

Å kjøre koden ovenfor gir oss:

ts j
ets java
null

StringUtils.split()

En metode som lar deg dele en streng i understrenger ved hjelp av et spesielt skilletegn. Hvis det er en i målstrengen, vil metoden returnere en rekke understrenger. Hvis det ikke er noe tegn, vil en tom matrise bli returnert. Vel, hvis null sendes til metoden , vil den returnere null . La oss ta en titt på denne koden og hvordan metoden fungerer:

String myData = "Address, City, State, Zip, Phone, Email, Password";

System.out.println(Arrays.toString(StringUtils.split(myData, ',')));
System.out.println(Arrays.toString(StringUtils.split(null, '.')));
System.out.println(Arrays.toString(StringUtils.split("", '.')));

Resultat:

[Address,  City,  State,  Zip,  Phone,  Email,  Password]
null
[]

StringUtils.join()

join() -metoden lar deg sette sammen en rekke strenger til en enkelt streng. Samtidig kan et spesielt skilletegn sendes til det, som legges til mellom understrenger i den resulterende strengen. Og hvis null sendes til metoden , vil den returnere null .

Denne metoden er det stikk motsatte av split()- metoden . La oss se på dette enkle eksemplet:

String myData = "Address, City, State, Zip, Phone, Email, Password";

String[] myString =  StringUtils.split(myData, ',');
System.out.println(StringUtils.join(myString, '-'));

Å kjøre koden ovenfor gir oss:

Address- City- State- Zip- Phone- Email- Password

StringUtils.replace()

Søker etter en streng i en streng, finner den hvis den eksisterer, og erstatter alle forekomster av den med en ny streng.

Erklæringen om denne metoden ser slik ut:

public static String replace(final String text, final String searchString, final String replacement)

Hvis søkestrengen ikke finnes i teksten, vil ingenting skje, og teksten forblir den samme. Etter samme logikk, hvis teksten er null , returnerer denne metoden null . Hvis du leter etter en nullstreng eller erstatter en delstreng med null , vil metoden returnere den opprinnelige strengen.

La oss prøve denne metoden:

String value = "CodeGym is the best";
System.out.println(StringUtils.replace(value, "best", "cool"));

Resultat:

CodeGym is the cool