016 문자열이 부분 문자열을 포함하는지 검사
String.contains() 메서드로 아주 간단하게 코드 한 줄짜리 해법을 만들 수 있다.
이 메서드는 원래 문자열이 주어진 부분 문자열을 포함하는지 가리키는 boolean 값을 반환한다.
String text = "hello world!";
String subtext = "orl";
// subtext=""이면 true를 반환한다는 점에 유의하자
boolean contains = text.contains(subtext);
아래처럼 String.indexOf()(또는 String.lastIndexOf())로 구현하는 해법도 있다.
public static boolean contains(String text, String subtext) {
return text.indexOf(subtext) != -1; // 또는 lastIndexOf()
}
아래처럼 정규식을 사용해 구현하는 해법도 있다.
public static boolean contains(String text, String subtext) {
return text.matches("(?i).*" + Pattern.quote(subtext) + ".*");
}
이때 정규식을 Pattern.quote() 메서드로 감쌌다. 주어진 부분 문자열 내 <([{\^-=$!|]})?*+.> 같은 특수 문자를 이스케이프하기 위해서다.
TIP ≣ 외부 라이브러리 지원을 받으려면 아파치 커먼즈 랭의 StringUtils.containsIgnoreCase()를 활용한다.