Java String contains Ignore Case

Java String contains IgnoreCase

We often have to check if a string contains a substring or not in a case-insensitive manner. There are multiple ways to do so. In this article, we will take a look at these methods for java String contains Ignore Case checks.
Next, we will look at each method in detail.
[toc]

Using String.toLowerCase()

One of the easiest ways to check if a String has a substring without considering the case is to convert all the Strings to lowercase and then check for a substring.
To check for a substring, we use the contains() method, and for converting the String to lowercase, we use the toLowerCase() method.

String str1 = "Life is like riding a bicycle. To keep your balance, you must keep moving. ALBERT EINSTEIN";

boolean res1 = str1.toLowerCase().contains("albert".toLowerCase());
boolean res2 = str1.toLowerCase().contains("ALBERT".toLowerCase());

The above two examples give the output "true" since Albert is present in the String.

Result of toLowerCase: true
Result of toLowerCase: true

Using Pattern.compile()

With the Pattern.compile() method, we can convert the pattern we pass to an insensitive regex pattern. Using the regex, we can use a Matcher to find if one String contains the other.
For example,

boolean res3 = Pattern.compile(Pattern.quote("AlBerT"),Pattern.CASE_INSENSITIVE).matcher(str1).find();
System.out.println("Result is: " + res3);

The result is true as long as the characters we are trying to match in our String are present in the target string.

Result is: true

Using String’s Matches

The String.matches() method is using a regex pattern to find matching strings. If we use a (?i) argument in the matches method, we make it case-insensitive.
For example,

boolean res4 = str1.matches("(?i).*" + "AlBerT" + ".*");
System.out.println("Result of the matches operation is: " + res4); 

The output is again true because we check if Albert exists in the String in a case-insensitive manner.

Result of the matches operation is: true

IF we do the same operation but do not pass the (?i) parameter, we will get False.

boolean res6 = str1.matches("AlBerT" + ".*");
System.out.println("Result of the matches operation is: " + res6);
Result of the matches operation is: false

Using StringUtils.containsIgnoreCase()

The apache foundation provides the apache-commons-lang jar. This jar contains a collection of utility classes, one of which is the StringUtils class. The StringUtils class contains a containsIgnoreCase() method that checks if a string is a substring of another in a case-insensitive manner.

Before we can use the methods in this jar, we need to add it our Build Path.
Here is the dependency which you need to add for Apache common lang3 in pom.xml.


            org.apache.commons
            commons-lang3
            3.9
        

Once added, we can use it as follows:

boolean res5 = StringUtils.containsIgnoreCase(str1, "RiDing");
System.out.println("Result of StringUtils: " + res5);
Result of StringUtils: true

Complete program for Java String contains IgnoreCase

Here is complete program with all above examples:

package org.arpit.java2blog;

import java.util.regex.Pattern;

import org.apache.commons.lang3.StringUtils;

public class MainApplication {

    public static void main(String[] args) {

        String str1 = "Life is like riding a bicycle. To keep your balance, you must keep moving. ALBERT EINSTEIN";

        boolean res1 = str1.toLowerCase().contains("albert".toLowerCase());
        boolean res2 = str1.toLowerCase().contains("ALBERT".toLowerCase());

        //First method
        System.out.println("Result of toLowerCase: " + res1);
        System.out.println("Result of toLowerCase: " + res2);

        //Pattern.compile 
        boolean res3 = Pattern.compile(Pattern.quote("AlBerT"), Pattern.CASE_INSENSITIVE).matcher(str1).find();
        System.out.println("Result is: " + res3);

        //String.matches
        boolean res4 = str1.matches("(?i).*" + "AlBerT" + ".*");
        System.out.println("Result of the matches operation is: " + res4);

        boolean res6 = str1.matches("AlBerT" + ".*");
        System.out.println("Result of the matches operation is: " + res6);

        boolean res5 = StringUtils.containsIgnoreCase(str1, "RiDing");
        System.out.println("Result of StringUtils: " + res5);

    }

}

Output:

Result of toLowerCase: true
Result of toLowerCase: true
Result is: true
Result of the matches operation is: true
Result of the matches operation is: false
Result of StringUtils: true

Conclusion

In this article, we saw multiple ways to check if a string is a substring of another in a case-insensitive manner.

That’s all about Java String contains ignore case.

[social_share share_on="facebook,twitter,linkedin,whatsapp"][post_navigator in_same_term="true"]

Leave a Reply

Your email address will not be published. Required fields are marked *

Subscribe to our newletter

Get quality tutorials to your inbox. Subscribe now.