HiveBrain v1.2.0
Get Started
← Back to all entries
snippetjavaCritical

How to check if a String contains another String in a case insensitive manner in Java?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
howjavacheckinsensitivemannerstringcaseanothercontains

Problem

Say I have two strings,

String s1 = "AbBaCca";
String s2 = "bac";


I want to perform a check returning that s2 is contained within s1. I can do this with:

return s1.contains(s2);


I am pretty sure that contains() is case sensitive, however I can't determine this for sure from reading the documentation. If it is then I suppose my best method would be something like:

return s1.toLowerCase().contains(s2.toLowerCase());


All this aside, is there another (possibly better) way to accomplish this without caring about case-sensitivity?

Solution

Yes, contains is case sensitive. You can use java.util.regex.Pattern with the CASE_INSENSITIVE flag for case insensitive matching:

Pattern.compile(Pattern.quote(wantedStr), Pattern.CASE_INSENSITIVE).matcher(source).find();


EDIT: If s2 contains regex special characters (of which there are many) it's important to quote it first. I've corrected my answer since it is the first one people will see, but vote up Matt Quail's since he pointed this out.

Code Snippets

Pattern.compile(Pattern.quote(wantedStr), Pattern.CASE_INSENSITIVE).matcher(source).find();

Context

Stack Overflow Q#86780, score: 358

Revisions (0)

No revisions yet.