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.