StringUtils.containsIgnoreCase() 메서드란?
Apache Commons 라이브러리의 org.apache.commons.lang3 패키지에 포함된 StringUtils 클래스는 containsIgnoreCase()라는 편리한 메서드를 제공합니다.
이 메서드는 원본 문자열(source string)과 검색 문자열(search string) 두 개의 String 값을 매개변수로 받아, 대소문자를 구분하지 않고 원본 문자열 안에 검색 문자열이 포함되어 있는지 확인합니다. 확인 결과는 boolean 값으로 반환됩니다.
- true — 원본 문자열에 검색 문자열이 포함된 경우
- false — 원본 문자열에 검색 문자열이 포함되지 않은 경우
사용 방법
대소문자와 관계없이 문자열에 특정 부분 문자열이 포함되어 있는지 확인하려면 다음 단계를 따르면 됩니다.
- Maven 프로젝트라면 pom.xml 파일에 commons-lang3 의존성을 추가합니다.
- 검색 대상이 되는 원본 문자열을 준비합니다.
- 찾고자 하는 검색 문자열을 준비합니다.
- 두 문자열 객체를 매개변수로 전달하여(원본 문자열이 먼저 오도록 순서를 지켜야 합니다)
containsIgnoreCase()메서드를 호출합니다.
Maven 의존성 추가
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
예제
D 드라이브에 다음과 같은 내용을 담은 sample.txt 파일이 있다고 가정해 보겠습니다.
Tutorials point originated from the idea that there exists a class of readers who respond better to on-line content and prefer to learn new skills at their own pace from the comforts of their drawing rooms. At Tutorials point we provide high quality learning-aids for free of cost.
다음 Java 예제는 사용자로부터 부분 문자열을 입력받은 뒤, 해당 파일에 그 문자열이 대소문자 구분 없이 포함되어 있는지 확인하는 프로그램입니다.
import java.io.File;
import java.util.Scanner;
import org.apache.commons.lang3.StringUtils;
public class ContainsIgnoreCaseExample {
public static String fileToString(String filePath) throws Exception {
String input = null;
Scanner sc = new Scanner(new File(filePath));
StringBuffer sb = new StringBuffer();
while (sc.hasNextLine()) {
input = sc.nextLine();
sb.append(input);
}
return sb.toString();
}
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the sub string to be verified: ");
String subString = sc.next();
String fileContents = fileToString("D:\\sample.txt");
// 파일에 해당 부분 문자열이 포함되어 있는지 확인 (대소문자 무시)
boolean result = StringUtils.containsIgnoreCase(fileContents, subString);
if(result) {
System.out.println("File contains the given sub string.");
} else {
System.out.println("File does not contain the given sub string.");
}
}
}
실행 결과
Enter the sub string to be verified: comforts of their drawing rooms. File contains the given sub string.
참고: 외부 라이브러리 없이 구현하는 방법
Apache Commons 라이브러리를 사용할 수 없는 환경이라면, 비교하려는 두 문자열을 모두 소문자(또는 대문자)로 변환한 후 표준 String.contains() 메서드를 호출하는 방식으로 동일한 결과를 얻을 수 있습니다.
boolean result = fileContents.toLowerCase().contains(subString.toLowerCase());
다만 이 방식은 원본 문자열의 복사본을 추가로 생성하기 때문에, 매우 긴 문자열을 반복적으로 검색하는 경우에는 성능 면에서 containsIgnoreCase()보다 불리할 수 있습니다. 간단한 일회성 검사라면 충분히 실용적인 대안입니다.