How to use `string.startsWith()` method ignoring the case?
I want to use string.startsWith()
method but ignoring the case.
Suppose I have String
"Session" and I use startsWith
on "sEsSi" then it should return true
.
How can I achieve this?
Solution 1:
Use toUpperCase()
or toLowerCase()
to standardise your string before testing it.
Solution 2:
One option is to convert both of them to either lowercase or uppercase:
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
This is wrong. See: https://stackoverflow.com/a/15518878/14731
Another option is to use String#regionMatches()
method, which takes a boolean argument stating whether to do case-sensitive matching or not. You can use it like this:
String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, 5)); // true
It checks whether the region of needle
from index 0
till length 5
is present in haystack
starting from index 0
till length 5
or not. The first argument is true
, means it will do case-insensitive matching.
And if only you are a big fan of Regex, you can do something like this:
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
(?i)
embedded flag is for ignore case matching.
Solution 3:
I know I'm late, but what about using StringUtils.startsWithIgnoreCase() from Apache Commons Lang 3 ?
Example :
StringUtils.startsWithIgnoreCase(string, "start");
Just add the following dependency to your pom.xml file (taking the hypothesis that you use Maven) :
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>