Ich möchte die string.startsWith()Methode verwenden, aber den Fall ignorieren.
Angenommen, ich habe String"Session" und verwende startsWith"sEsSi", dann sollte es zurückkehren true.
Wie kann ich das erreichen?
Ich möchte die string.startsWith()Methode verwenden, aber den Fall ignorieren.
Angenommen, ich habe String"Session" und verwende startsWith"sEsSi", dann sollte es zurückkehren true.
Wie kann ich das erreichen?
Antworten:
Verwenden Sie toUpperCase()oder toLowerCase(), um Ihre Zeichenfolge zu standardisieren, bevor Sie sie testen.
String.equalsIgnoreCase()Sie feststellen, dass Sie sowohl Klein- als auch Großbuchstaben der Strings vergleichen müssen, bevor Sie endgültig zurückkehren können false. Eine alternative Antwort finden Sie unter stackoverflow.com/a/38947571/14731 .
"İstanbul".toLowerCase().startsWith("istanbul".toLowerCase())(in einer Locale.Turkish-Umgebung), werde ich falsch sein.
Eine Möglichkeit besteht darin, beide in Klein- oder Großbuchstaben umzuwandeln:
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
Das ist falsch. Siehe: https://stackoverflow.com/a/15518878/14731
Eine andere Option ist die Verwendung einer String#regionMatches()Methode, die ein boolesches Argument verwendet, das angibt, ob zwischen Groß- und Kleinschreibung unterschieden werden soll oder nicht. Sie können es so verwenden:
String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, 5)); // true
Sie prüft , ob die Region needlevon Index 0bis Länge 5in vorhanden ist , haystackaus dem Index beginnend 0bis Länge 5oder nicht. Das erste Argument truebedeutet, dass die Übereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung erfolgt.
Und wenn Sie nur ein großer Fan von Regex sind , können Sie so etwas tun:
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
(?i) Das eingebettete Flag dient zum Ignorieren der Fallübereinstimmung.
System.out.println("Session".toLowerCase().startsWith("sEsSi".toLowerCase()));ist keine richtige Lösung. Sie können dies versuchen: System.out.println("SessIon".toLowerCase().startsWith("sEsSi".toLowerCase()));mit VM-Argumenten -Duser.country=TR -Duser.language=tr In diesem Beispiel Iist das Großbuchstabeni
Versuche dies,
String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))
Sie können verwenden someString.toUpperCase().startsWith(someOtherString.toUpperCase())
Ich weiß, dass ich zu spät bin, aber was ist mit StringUtils.startsWithIgnoreCase () von Apache Commons Lang 3?
Beispiel:
StringUtils.startsWithIgnoreCase(string, "start");
Fügen Sie Ihrer pom.xml-Datei einfach die folgende Abhängigkeit hinzu (unter der Annahme, dass Sie Maven verwenden):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
string.regionMatches(true, 0, prefix, 0, prefix.length());der die Kosten für die "Normalisierung" beider Zeichenfolgen nicht anfallen.