Sådan sammenlignes to strenge i Java
Metoder til at sammenligne strenge i Java
Java giver forskellige metoder, du kan bruge til at sammenligne to strenge i Java. Strengesammenligning i Java er en funktion, der matcher en sekvens af tegn til en streng.
For at lære at sammenligne strenge i Java, kan du bruge metoderne fra følgende klasser.
- String klasse fra Java.lang-pakke.
- Objektklasse fra Java.util-pakke.
- StringUtils-klassen fra org.apache.commons.lang3-pakken.
De fleste af disse Java sammenligne strenge metoder har løsninger til at ignorere sagen. I dette Java tutorial, vil du lære de forskellige metoder, som du kan bruge til at sammenligne to strenge.
Metode 1: Streng lig med() metode
Java String equals() metode sammenligner to strengobjekter for lige store strengværdier.
Syntaks:
public boolean equals(Object anObject)
equals() metodeparametre:
anObject – Argumentstrengen til sammenligning af strenge.
equals() metode returtyper
- Returnerer sand, hvis den angivne strengliteral er den samme som den første streng.
- Returnerer falsk, hvis den første streng 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 output:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Forklaring:
- Du fik falsk i det sidste output, fordi det angivne objekt har en anden store og små bogstaver.
Bemærk: Brug strengen er lig-metoden til sammenligning af tekstfølsomme strenge. Brug metoden "equalsIgnoreCase" til at sammenligne strengobjekter med forskellige strengværdier.
Metode 2: Objekter er lig med() metode
Java Objekter er lig med() metoden sammenligner to strengobjekter for at finde ud af, om de har de samme værdier.
Syntaks:
public static boolean equals(Object a, Object b)
equals() metodeparametre
a – Argumentstreng for det første strengobjekt.
b – Argumentstreng for det andet strengobjekt.
equals() metode returtyper
- Returnerer sand, hvis strengens literaler er ens. Hvis du sender en nulværdi i de to argumenter, vil det også returnere sand.
- Returnerer falsk, hvis strengens literaler ikke er ens.
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)); } }
Output:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Forklaring:
Fra dette eksempel kan du se, at outputtet er en boolsk værdi af sand, da de sammenlignede strenge er ens.
Metode 3: String compareTo() metode
Java String compareTo() metoden sammenligner to strenge i alfabetisk rækkefølge. Det omtales normalt som leksikografisk orden.
Syntaks:
public int compareTo(String str)
compareTo() metodeparametre
str – Den streng, der skal sammenlignes med den aktuelle streng.
compareTo() metoden returnerer
- 0 – Returnerer nul, hvis det angivne objekt er lig med den aktuelle streng.
- < 0 – Returnerer et tal mindre end nul, hvis denne streng er mindre end det angivne objekt.
- > 0 – Returnerer et tal større end nul, hvis denne streng overstiger den angivne streng.
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 output:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Forklaring:
Det første resultat returnerer en værdi på nul, da den første og anden streng er ens.
Det andet resultat returnerer en værdi på toogtredive, da tegnene er forskellige.
Bemærk: For at ignorere sagerne kan du bruge "compareToIgnoreCase" metoden.
Metode 4: StringUtils equals() metode
Java StringUtils er lig med() metoden sammenligner ligheden mellem to sekvenser af tegn.
Sørg for, at du har tilføjet "org.apache.commons.lang3"-biblioteket i dit program. Dette giver dig mulighed for at sammenligne strenge ved hjælp af StringUtil-metoderne.
Brug dette til Maven-projekter vejlede at tilføje biblioteket til projektet.
Men hvis du vil tilføje biblioteket uden byggeværktøjer, skal du bruge dette vejlede.
Syntaks:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
StringUtils equals() metodeparametre
- cs1 – En sekvens af tegn til det første argument.
- cs2 – En sekvens af tegn til det andet argument.
StringUtils equals() metode returnerer
- Returnerer sand, hvis strengsammenligningen er ens. Det gælder, hvis du sender en nulværdi i de to argumenter.
- Returnerer falsk, hvis strengsammenligningen ikke er ens.
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)); } }
Output:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Forklaring:
Da indholdet af den første og anden streng er ens, returnerer resultatet sandt.
Du kan bruge metoden "equalsIgnoreCase" til at ignorere sagen.
Metode 5: StringUtils equalsAny() metode
Java StringUtils equalsAny() metoden kontrollerer, om der findes en streng i argumenterne.
Syntaks:
public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)
StringUtils equalsAny() metodeparametre
- streng – strengværdien for det første argument. Argumentet kan også have en nulværdi.
- searchStrings – Et sæt strengargumenter for metoden til at finde, om den første argumentstreng er til stede.
StringUtils equalsAny() metode returnerer
- Returnerer sand, hvis den streng, der skal matches, findes i det variable antal søgestrenge. Dette gælder, hvis begge argumenter er nul.
- Returnerer falsk, hvis den streng, der skal matches, ikke matcher nogen streng i det variable antal søgestrenge.
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)); } }
Output:
is Guru99 available: true is GURU99 available: false
Forklaring:
Da indholdet af den første streng og den anden streng er ens, returnerer resultatet sandt. Du kan bruge metoden "equalsAnyIgnoreCase" til at ignorere sagen.
Metode 6: Brug af == operator
Operatoren == på strenge kontrollerer, om objektreferencer 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 output:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Forklaring:
- Det første resultat returnerer en boolsk værdi på sand. Strenge med det samme indhold føjes til den samme strengpulje, og derfor deler strengen én adresse.
- Det andet resultat returnerer en boolsk værdi på false. Objekterne har forskelligt indhold, hvilket resulterer i andre strengpuljer. Det betyder, at strengene har separate objektreferencer; outputtet er således falsk.
Metode 7: Oprettelse af en brugerdefineret metode til at sammenligne to strenge i Java
Opret en metode, der sammenligner to strenge ved hjælp af leksikografisk rækkefølge.
Syntaks:
public static int compareTwoStrings(String str1, String str2)
Brugerdefinerede metodeparametre
- str1 – Strengen der skal sammenlignes.
- str2 – Den streng, der skal sammenlignes med.
Tilpasset metode returnerer
- 0 – Returnerer nul, hvis den første streng er lig med den anden streng.
- < 0 – Returnerer et tal mindre end nul, hvis den første streng er mindre end den anden streng.
- > 0 – Returnerer et tal større end nul, hvis den første streng er større end den anden streng.
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 output:
is Guru99 equal to Guru99: 0
Forklaring:
Resultatet returnerede en værdi på nul, hvilket betyder, at den brugerdefinerede funktion fungerer som forventet.
Sammendrag:
Java sammenligne to strenge metode til at bruge afhænger af følgende faktorer.
- Ønske om at have kontrol over din metode. I dette tilfælde skal du oprette en brugerdefineret metode.
- Du kan ikke bruge ældre kode. med Java 6 og lavere.
- Metoden, der har optimal ydeevne.
- Den type data, du arbejder med. For eksempel at matche en streng fra et sæt variable argumenter.
- Funktionerne leveret af det outsourcede bibliotek. For eksempel tilbyder StringUtils-biblioteket forskellige metoder til at sammenligne strenge.