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.
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.
No comments:
Post a Comment
Please do not add any spam links in the comments section.