Voglio usare il string.startsWith()metodo ma ignorando il caso.
Supponiamo che io abbia String"Session" e lo uso startsWithsu "sEsSi", quindi dovrebbe tornare true.
Come posso raggiungere questo obiettivo?
Voglio usare il string.startsWith()metodo ma ignorando il caso.
Supponiamo che io abbia String"Session" e lo uso startsWithsu "sEsSi", quindi dovrebbe tornare true.
Come posso raggiungere questo obiettivo?
Risposte:
Usa toUpperCase()o toLowerCase()per standardizzare la tua stringa prima di testarla.
String.equalsIgnoreCase()te, scoprirai che devi confrontare entrambe le versioni minuscole e maiuscole delle stringhe prima di poter tornare definitivamente false. Vedi stackoverflow.com/a/38947571/14731 per una risposta alternativa.
"İstanbul".toLowerCase().startsWith("istanbul".toLowerCase())(in un ambiente Locale.Turkish), mi darà false.
Un'opzione è convertire entrambi in lettere minuscole o maiuscole:
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
Questo è sbagliato. Vedi: https://stackoverflow.com/a/15518878/14731
Un'altra opzione è usare il String#regionMatches()metodo, che accetta un argomento booleano che indica se eseguire o meno la corrispondenza con distinzione tra maiuscole e minuscole. Puoi usarlo in questo modo:
String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, 5)); // true
Controlla se la regione di needleda indice 0a lunghezza 5è presente a haystackpartire da indice 0fino a lunghezza 5oppure no. Il primo argomento è true, significa che eseguirà la corrispondenza senza distinzione tra maiuscole e minuscole.
E se solo sei un grande fan di Regex , puoi fare qualcosa del genere:
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
(?i) il flag incorporato serve per ignorare la corrispondenza tra maiuscole e minuscole.
System.out.println("Session".toLowerCase().startsWith("sEsSi".toLowerCase()));non è una soluzione valida. Puoi provare questo: System.out.println("SessIon".toLowerCase().startsWith("sEsSi".toLowerCase()));con gli argomenti vm -Duser.country=TR -Duser.language=tr In questo esempio il Iè maiuscoloi
prova questo,
String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))
So di essere in ritardo, ma per quanto riguarda l'utilizzo di StringUtils.startsWithIgnoreCase () da Apache Commons Lang 3?
Esempio :
StringUtils.startsWithIgnoreCase(string, "start");
Basta aggiungere la seguente dipendenza al tuo file pom.xml (ipotizzando che tu usi Maven):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
Puoi usare someString.toUpperCase().startsWith(someOtherString.toUpperCase())
string.regionMatches(true, 0, prefix, 0, prefix.length());che non incorre nel costo di "normalizzare" entrambe le stringhe.