Hvordan sammenligne to strenger i Java

Metoder for รฅ sammenligne strenger i Java

Java gir forskjellige metoder du kan bruke for รฅ sammenligne to strenger i Java. Strengesammenligning i Java er en funksjon som matcher en sekvens av tegn til en streng.

For รฅ lรฆre รฅ sammenligne strenger i Java, kan du bruke metodene gitt av fรธlgende klasser.

  • Strengeklasse fra Java.lang-pakken.
  • Objektklasse fra Java.util-pakken.
  • StringUtils-klassen fra org.apache.commons.lang3-pakken.

De fleste av disse Java sammenligne strenger metoder har lรธsninger for รฅ ignorere saken. I dette Java opplรฆringen, vil du lรฆre de forskjellige metodene du kan bruke for รฅ sammenligne to strenger.

Metode 1: Streng lik() metode

Ocuco Java String equals() metode sammenligner to strengobjekter for like strengverdier.

Syntaks:

public boolean equals(Object anObject)

equals() metodeparametere:

anObject โ€“ Argumentstrengen for รฅ sammenligne strenger.

equals()-metodens returtyper

  • Returnerer sant hvis den angitte strengen er den samme som den fรธrste strengen.
  • Returnerer usann hvis den fรธrste strengen ikke er den samme som argumentstrengen.

Eksempel:

public class CompareTwoStrings {
 public static void main(String[] args) {
   String stringOne = "Guru99";
   String stringTwo = "Guru99";
   System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
   String stringThree = "GURU99";
   System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
  }
}

Forventet utgang:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Forklaring:

  • Du fikk usann i den siste utgangen fordi det spesifiserte objektet har en annen store og smรฅ bokstaver.

Merknader: Bruk string equals-metoden for รฅ sammenligne strenger som skiller mellom store og smรฅ bokstaver. Bruk "equalsIgnoreCase"-metoden for รฅ sammenligne strengobjekter med forskjellige strengverdier.

Metode 2: Objects equals() metode

Ocuco Java Objekter er lik() metoden sammenligner to strengobjekter for รฅ finne om de har samme verdier.

Syntaks:

public static boolean equals(Object a, Object b)

equals() metodeparametere

a โ€“ Argumentstreng for det fรธrste strengobjektet.

b โ€“ Argumentstreng for det andre strengobjektet.

equals()-metodens returtyper

  • Returnerer sann hvis strengliteralene er like. Hvis du sender en nullverdi i de to argumentene, vil det ogsรฅ returneres sant.
  • Returnerer usann hvis strengliteralene ikke er like.

Eksempel:

import java.util.Objects;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo));
        String stringThree = null;
        String stringFour = null;
        System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour));
    }
}

Utgang:

is Guru99 equal to Guru99: true
is Guru99 equal to Guru99: true

Forklaring:

Fra dette eksemplet kan du se at utdata er en boolsk verdi pรฅ sann siden strengene som sammenlignes er like.

Metode 3: String compareTo() metode

Ocuco Java String compareTo() metoden sammenligner to strenger i alfabetisk rekkefรธlge. Det blir vanligvis referert til som leksikografisk rekkefรธlge.

Syntaks:

public int compareTo(String str)

compareTo() metodeparametere

str โ€“ Strengen som skal sammenlignes med gjeldende streng.

compareTo()-metoden returnerer

  • 0 โ€“ Returnerer null hvis det angitte objektet er lik gjeldende streng.
  • < 0 โ€“ Returnerer et tall mindre enn null hvis denne strengen er mindre enn det angitte objektet.
  • > 0 โ€“ Returnerer et tall stรธrre enn null hvis denne strengen overskrider den angitte strengen.

Eksempel:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
        String stringThree = "GURU99";
		// u = 117, U = 85, result = 117-85 = 32
        System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
    }
}

Forventet utgang:

is Guru99 equal to Guru99: 0
is Guru99 equal to GURU99: 32

Forklaring:

Det fรธrste resultatet returnerer verdien null siden den fรธrste og andre strengen er like.

Det andre resultatet returnerer en verdi pรฅ trettito siden tegnene er forskjellige.

OBS: For รฅ ignorere tilfellene kan du bruke "compareToIgnoreCase"-metoden.

Metode 4: StringUtils equals() metode

Ocuco Java StringUtils er lik() metoden sammenligner likheten mellom to sekvenser av tegn.

Sรธrg for at du har lagt til "org.apache.commons.lang3"-biblioteket i programmet ditt. Dette vil tillate deg รฅ sammenligne strenger ved รฅ bruke StringUtil-metodene.

For Maven-prosjekter, bruk denne veilede for รฅ legge til biblioteket i prosjektet.

Men hvis du vil legge til biblioteket uten byggeverktรธy, bruk dette veilede.

Syntaks:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils equals() metodeparametere

  • cs1 โ€“ En sekvens av tegn for det fรธrste argumentet.
  • cs2 โ€“ En sekvens av tegn for det andre argumentet.

StringUtils equals()-metoden returnerer

  • Returnerer sann hvis strengsammenligningen er lik. Det gjelder hvis du sender en nullverdi i de to argumentene.
  • Returnerer usann hvis strengsammenligningen ikke er lik.

Eksempel:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree));
    }
}

Utgang:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Forklaring:

Siden innholdet i den fรธrste og andre strengen er like, returnerer resultatet sant.

Du kan bruke ยซequalsIgnoreCaseยป-metoden for รฅ ignorere saken.

Metode 5: StringUtils equalsAny() metode

Ocuco Java StringUtils equalsAny() metoden sjekker om det finnes en streng i argumentene.

Syntaks:

public static boolean equalsAny(CharSequence string, Charsequenceโ€ฆ searchStrings)

StringUtils equalsAny() metodeparametere

  • streng โ€“ strengverdien for det fรธrste argumentet. Argumentet kan ogsรฅ ha en nullverdi.
  • searchStrings โ€“ Et sett med strengargumenter for metoden for รฅ finne om den fรธrste argumentstrengen er til stede.

StringUtils equalsAny()-metoden returnerer

  • Returnerer sann hvis strengen som skal samsvare finnes i variabelt antall sรธkestrenger. Dette gjelder hvis begge argumentene er null.
  • Returnerer usann hvis strengen som skal samsvare ikke samsvarer med noen streng i variabelt antall sรธkestrenger.

Eksempel:

import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String[] stringTwo = new String[] {
            "Guru99",
            "JavaGuru99"
        };
        System.out.println("is Guru99 available: " +
            StringUtils.equalsAny(stringOne, stringTwo));
        String[] stringThree = new String[] {
            "GURU99",
            "JavaGuru99"
        };
        System.out.println("is GURU99 available: " +
            StringUtils.equalsAny(stringOne, stringThree));
    }
}

Utgang:

is Guru99 available: true
is GURU99 available: false

Forklaring:

Siden innholdet i den fรธrste strengen og den andre strengen er like, returnerer resultatet sant. Du kan bruke ยซequalsAnyIgnoreCaseยป-metoden for รฅ ignorere saken.

Metode 6: Bruke == operator

Operatoren == pรฅ strenger sjekker om objektreferanser har samme adresse.

Eksempel:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
        String stringThree = "GURU99";
        System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
    }
}

Forventet utgang:

is Guru99 == to Guru99: true
is Guru99 == to GURU99: false

Forklaring:

  • Det fรธrste resultatet returnerer en boolsk verdi pรฅ sann. Strenger med samme innhold legges til i samme strengpool, og derfor deler strengen รฉn adresse.
  • Det andre resultatet returnerer en boolsk verdi pรฅ false. Objektene har forskjellig innhold, noe som resulterer i andre strengpooler. Dette betyr at strengene har separate objektreferanser; dermed utgangen er falsk.

Metode 7: Opprette en egendefinert metode for รฅ sammenligne to strenger i Java

Lag en metode som sammenligner to strenger ved รฅ bruke leksikografisk rekkefรธlge.

Syntaks:

public static int compareTwoStrings(String str1, String str2)

Egendefinerte metodeparametere

  • str1 โ€“ Strengen som skal sammenlignes.
  • str2 โ€“ Strengen รฅ sammenligne mot.

Egendefinert metode returnerer

  • 0 โ€“ Returnerer null hvis den fรธrste strengen er lik den andre strengen.
  • < 0 โ€“ Returnerer et tall mindre enn null hvis den fรธrste strengen er mindre enn den andre strengen.
  • > 0 โ€“ Returnerer et tall stรธrre enn null hvis den fรธrste strengen er stรธrre enn den andre strengen.

Eksempel:

public class CompareTwoStrings {
    public static int compareTwoStrings(String stringOne, String stringTwo) {
        int lengthOfStringOne = stringOne.length();
        int lengthOfStringTwo = stringTwo.length();
        int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
        for (int i = 0; i < minStringLength; i++) {
            char stringOneCharValue = stringOne.charAt(i);
            char stringTwoCharValue = stringTwo.charAt(i);
            if (stringOneCharValue != stringTwoCharValue) {
                return stringOneCharValue - stringTwoCharValue;
            }
        }
        if (lengthOfStringOne != lengthOfStringTwo) {
            return lengthOfStringOne - lengthOfStringTwo;
        } else {
            return 0;
        }
    }
    public static void main(String[] args) {
        String stringOne = "Guru99";
        String stringTwo = "Guru99";
        System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
    }
}

Forventet utgang:

is Guru99 equal to Guru99: 0

Forklaring:

Resultatet returnerte en verdi pรฅ null, noe som betyr at den tilpassede funksjonen fungerer som forventet.

Sammendrag:

Ocuco Java sammenligne to strenger metode for รฅ bruke avhenger av fรธlgende faktorer.

  • ร˜nske om รฅ ha kontroll over metoden din. I dette tilfellet oppretter du en egendefinert metode.
  • Du kan ikke bruke eldre kode. med Java 6 og lavere.
  • Metoden som har optimal ytelse.
  • Typen data du jobber med. For eksempel รฅ matche en streng fra et sett med variable argumenter.
  • Funksjonene som tilbys av det outsourcede biblioteket. For eksempel tilbyr StringUtils-biblioteket forskjellige metoder for รฅ sammenligne strenger.

Oppsummer dette innlegget med: