더북(TheBook)

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()를 활용한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.