Pages

Thursday, November 11, 2021

Java Program - Check If String Contains A Substring

1. Overview

In this tutorial, We'll learn how to find and check if the string contains the substring in java.

This problem is commonly asked in the interview rounds. 

There are many solutions are present for this problem using java string api methods and third party api's also.

Let us write the quick program to understand the all methods.

Java Program - Check If String Contains A Substring

2. Java - Check If String Contains A Substring Using String.contains()

String class is added with contains() method which takes another method. contains() method returns true, if the passed string is present inside the current string, otherwise returns false.

Look at the below code.

package com.javaprogramto.programs.strings.substrin;

public class StringContainsSubstringExample {

	public static void main(String[] args) {

		String input = "hello world - welcome";
		String substring = "world";
		boolean isSubstring = input.contains(substring);

		System.out.println(isSubstring);

		substring = "llo";
		isSubstring = input.contains(substring);

		System.out.println(isSubstring);

		substring = "java";
		isSubstring = input.contains(substring);

		System.out.println(isSubstring);

	}
}

Output:

true
true
false

First two substring are present in the input string. So contains() method returned true. The 3rd string "java" is not present in the input string. So, contains() method returned false.

And also note that contains() method is case sensitive.

If you pass substring as "Hello" which does not match the "hello" from the input string because h is lower in the input and upper in the sub string.

Refer the below code.

substring = "Hello";
isSubstring = input.contains(substring);

System.out.println(isSubstring);

Output:

false


3. Java - Check If String Contains A Substring Using String.indexOf() or lastIndexOf()

Next solution is using the String class indexOf() or lastIndexOf() methods.

if the match is found then these method returns the starting of the index of substring from input string, otherwise -1 if no match found.

Example:

package com.javaprogramto.programs.strings.substrin;

public class StringContainsSubstringExample2 {

	public static void main(String[] args) {

		String input = "hello world - welcome";
		String substring = "world";
		int index = input.indexOf(substring);

		System.out.println(index);

		substring = "llo";
		index = input.lastIndexOf(substring);

		System.out.println(index);

		substring = "java";
		index = input.indexOf(substring);

		System.out.println(index);

		substring = "Hello";
		index = input.lastIndexOf(substring);

		System.out.println(index);

	}
}

Output:

6
2
-1
-1


indexOf() and lastIndexOf() methods also case sensitive.

4. Java - Check If String Contains A Substring Using Regular Expression

Next solution to solve this problem is with help of regular expression. We need to use the Pattern.quote() method and this method takes the regex pattern. 

This method takes care if the substring has the special characters then escaping them is taken care by quote method.

Look at the following code.

package com.javaprogramto.programs.strings.substrin;

import java.util.regex.Pattern;

public class StringContainsSubstringExample3 {

	public static void main(String[] args) {

		String input = "hello world - welcome";
		String substring = "world";
		boolean isPatternMatched = input.matches("(?i).*" + Pattern.quote(substring) + ".*");

		System.out.println(isPatternMatched);

		substring = "llo";
		isPatternMatched = input.matches("(?i).*" + Pattern.quote(substring) + ".*");

		System.out.println(isPatternMatched);

		substring = "java";
		isPatternMatched = input.matches("(?i).*" + Pattern.quote(substring) + ".*");

		System.out.println(isPatternMatched);

	}
}


Output:

true
true
false

5. Java - Check If String Contains A Substring Using Apache Commons

Apache commons lang third party api also provided a utility method to handle this problem.

contains(): Checks the given substring is present in the main string.

containsIgnoreCase(): Same as above but ignores the case sensitive

indexOf(): Returns the index of substring if present, else returns -1.


package com.javaprogramto.programs.strings.substrin;

import org.apache.commons.lang3.StringUtils;

public class StringContainsSubstringExample4 {

	public static void main(String[] args) {

		// StringUtils.contains() example
		String input = "hello world - welcome";
		String substring = "world";
		boolean isPatternMatched = StringUtils.contains(input, substring);

		System.out.println(isPatternMatched);

		// StringUtils.containsIgnoreCase() example
		substring = "Hello";
		isPatternMatched = StringUtils.containsIgnoreCase(input, substring);

		System.out.println(isPatternMatched);

		// StringUtils.isIndexFound() example
		substring = "welco";
		int isIndexFound = StringUtils.indexOf(input, substring);

		System.out.println(isIndexFound);

	}
}

Output:

true
true
14

6. Conclusion

In this article, We've seen the various ways to check whether the string contains the substring in it or not in java.

Apache commons StringUtils class has many utility methods. These are the additional methods which is not shown in the above example indexOfAny(), indexOfAnyBut(), indexOfDifference(). All of these methods can be used to solve the problem statement.

GitHub

StringUtils

String examples

Pattern.quote() 

No comments:

Post a Comment

Please do not add any spam links in the comments section.