'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:[1]

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 2:[2]

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>

Solution 3:[3]

myString.toLowerCase().startsWith(starting.toLowerCase());

Solution 4:[4]

try this,

String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))

Solution 5:[5]

You can use someString.toUpperCase().startsWith(someOtherString.toUpperCase())

Solution 6:[6]

StartsWith(String value, bool ignoreCase, CultureInfo? culture) e.g:

string test = "Session";
bool result = test.StartsWith("sEsSi", true, null);
Console.WriteLine(result);

point: in VS by right-clicking on StartsWith and then "pick definition" can see all overloading method

enter image description here

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Gili
Solution 2 Sébastien Vandamme
Solution 3 agad
Solution 4 newuser
Solution 5 Prasad Kharkar
Solution 6 pedram