Java >> Java tutorial >  >> Tag >> String

Tjek, om en streng slutter med et bestemt mønster i Java

1. Oversigt

I denne korte vejledning skal vi gå i dybden med hvordan man kontrollerer, om en streng slutter med et bestemt mønster i Java .

Først vil vi starte med at overveje løsninger, der bruger kerne Java. Derefter vil vi vise, hvordan man opnår det samme ved at bruge eksterne biblioteker.

2. Brug af strengen Klasse

Kort sagt, String giver flere praktiske muligheder for at kontrollere, om en given streng slutter med en bestemt understreng.

Lad os se nærmere på hver mulighed.

2.1. String# slutterMed Metode

Denne metode introduceres typisk til dette formål. Det giver den mest ligetil måde at kontrollere, om en streng objekt ender med en anden streng .

Så lad os se det i aktion:

public static boolean usingStringEndsWithMethod(String text, String suffix) {
    if (text == null || suffix == null) {
        return false;
    }
    return text.endsWith(suffix);
}

Bemærk venligst, at endsWith er ikke null-safe. Så vi skal først sikre os, at tekst og suffiks er ikke null for at undgå NullPointerException .

2.2. String# matches Metode

matches er en anden fantastisk metode, som vi kan bruge til at nå vores mål. Den kontrollerer blot, om en streng matcher et givet regulært udtryk.

Grundlæggende er alt, hvad vi skal gøre, at specificere det regex, der fungerer korrekt til vores brugstilfælde:

public static boolean usingStringMatchesMethod(String text, String suffix) {
    if (text == null || suffix == null) {
        return false;
    }
    String regex = ".*" + suffix + "$";
    return text.matches(regex);
}

Som vi kan se, brugte vi et regulært udtryk, der matcher suffiks i slutningen ($ ) af vores streng tekst . Derefter sendte vi regex til matches metode.

2.3. String# regionMatches Metode

På samme måde kan vi bruge regionMatches metode til at løse vores centrale spørgsmål. Det returnerer sandt hvis en strengdel matcher nøjagtigt den angivne streng, og den returnerer falsk ellers .

Lad os nu illustrere dette med et eksempel:

public static boolean usingStringRegionMatchesMethod(String text, String suffix) {
    if (text == null || suffix == null) {
        return false;
    }
    int toffset = text.length() - suffix.length();
    return text.regionMatches(toffset, suffix, 0, suffix.length());
}

toffset angiver startforskydningen af ​​underregionen i vores streng. Så for at kontrollere, om tekst slutter med det angivne suffiks , toffset skal være lig med længden af ​​tekst minus længden af ​​suffiks .

3. Brug af mønsteret Klasse

Alternativt kan vi bruge mønsteret klasse for at kompilere et regulært udtryk, der kontrollerer, om en streng slutter med et mønster.

Lad os uden videre genbruge det samme regex, som vi specificerede i forrige afsnit:

public static boolean usingPatternClass(String text, String suffix) {
    if (text == null || suffix == null) {
        return false;
    }
    Pattern pattern = Pattern.compile(".*" + suffix + "$");
    return pattern.matcher(text).find();
}

Som vist ovenfor, Mønster kompilerer det forrige regex, som angiver slutningen af ​​en streng, og forsøger at matche den med vores streng tekst .

4. Brug af Apache Commons Lang

Apache Commons Lang giver et sæt klar-til-brug hjælpeklasser til strengmanipulation. Blandt disse klasser finder vi StringUtils .

Denne hjælpeklasse kommer med en interessant metode kaldet endsWith. Det tjekker om en sekvens af tegn ender med et suffiks på en null-sikker måde .

Lad os nu eksemplificere brugen af ​​StringUtils.endsWith metode:

public static boolean usingApacheCommonsLang(String text, String suffix) {
    return StringUtils.endsWith(text, suffix);
}

5. Konklusion

I denne artikel har vi undersøgt forskellige måder at kontrollere, om en streng ender med et bestemt mønster.

Først så vi et par måder at opnå dette på ved hjælp af indbyggede Java-klasser. Derefter forklarede vi, hvordan man gør det samme ved at bruge Apache Commons Lang-biblioteket.

Som altid kan koden, der bruges i denne artikel, findes på GitHub.


Java tag