Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java String contains() 메서드 완벽 가이드: 문자열 포함 여부 확인하기

Java의 contains() 메서드는 문자열 안에 특정 부분 문자열(substring)이 포함되어 있는지 확인합니다. 이 메서드는 true 또는 false를 반환하며, 검색하고자 하는 부분 문자열을 매개변수로 하나만 받습니다.


문자열을 다루다 보면 특정 문자 시퀀스가 문자열에 포함되어 있는지 확인해야 할 때가 많습니다. 예를 들어, 사용자의 전화번호에 미국 국가 코드(+1)가 포함되어 있는지 검사하는 애플리케이션을 개발하는 경우를 생각해 볼 수 있습니다.

Java에는 문자열에 특정 값이 포함되어 있는지 확인할 수 있는 내장 메서드인 contains()가 마련되어 있습니다. 이 글에서는 예제와 함께 Java에서 String contains() 메서드를 사용해 문자열에 부분 문자열이 포함되어 있는지 확인하는 방법을 알아보겠습니다.

Java 문자열(String)이란?

Java에서 문자열은 텍스트 기반 데이터를 저장하는 데 사용됩니다. 문자열은 0개 이상의 문자로 구성된 시퀀스로, 문자, 기호, 공백, 숫자 등을 포함할 수 있습니다.

Java에서 문자열은 큰따옴표로 묶인 문자 시퀀스로 선언합니다. 다음은 Java에서 문자열을 선언한 예시입니다.

String phone_number = "+1 000 000 0000";

이 예제에서는 phone_number라는 변수를 선언하여 문자열 값을 저장했습니다. 이 문자열에는 +1 000 000 0000이라는 값이 할당되었습니다.

Java 문자열의 기본 개념을 살펴봤으니, 이제 contains() 메서드의 사용 방법을 알아보겠습니다.

Java String contains() 메서드

Java의 문자열 자료형은 문자열 내용을 처리하고 조작할 수 있는 다양한 메서드를 제공합니다. 그중 하나가 contains()로, 문자열에 특정 문자 시퀀스가 포함되어 있는지 확인할 때 사용합니다.

정리하자면, contains()는 문자열에 특정 문자 또는 문자 시퀀스가 포함되어 있는지 검사하는 Java 내장 메서드입니다. String contains() 메서드의 문법은 다음과 같습니다.

string_name.contains(substring);

contains() 메서드는 매개변수를 하나만 받습니다. 바로 문자열에서 검색하고자 하는 문자 시퀀스입니다.

contains() 메서드는 두 가지 값을 반환할 수 있습니다. 지정한 문자열에 해당 부분 문자열이 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

예를 들어, 특정 고객의 예약 정보를 조회하는 레스토랑 프로그램을 만든다고 가정해 보겠습니다. 이 프로그램은 고객의 이름과 예약 번호를 입력받고, 고객이 제공한 성이 예약 정보에 저장된 성과 일치하는지 확인해야 합니다.

고객의 성이 저장된 이름 정보와 일치하는지 확인하려면 다음과 같은 코드를 사용할 수 있습니다.

class CheckReservation {
	public static void main(String[] args) {
		String name_on_file = "Jeff Clinton";
		String name_given_to_clerk = "Clinton";

		if (name_on_file.contains(name_given_to_clerk)) {
			System.out.println("This reservation is confirmed.");
		} else {
			System.out.println("This reservation does not exist.");
		}
	}
}

코드를 실행하면 다음과 같은 결과가 출력됩니다.

This reservation is confirmed.

코드를 단계별로 살펴보겠습니다. 먼저 CheckReservation이라는 클래스를 선언하여 프로그램 코드를 담습니다. 그런 다음 프로그램은 다음 단계를 실행합니다.

  1. 예약 시 고객이 전화로 알려준 전체 이름을 저장하는 name_on_file 변수를 선언합니다.
  2. 고객의 성을 저장하는 name_given_to_clerk 변수를 선언합니다.
  3. 프로그램은 contains() 메서드를 사용해 예약 시 제공된 이름이 접수원에게 알려준 성과 일치하는지 확인합니다.
    1. 저장된 이름에 접수원에게 알려준 성이 포함되어 있으면 콘솔에 "This reservation is confirmed."가 출력됩니다.
    2. 저장된 이름에 해당 성이 포함되어 있지 않으면 콘솔에 "This reservation does not exist."가 출력됩니다.

contains() 메서드는 문자열에 특정 부분 문자열이 포함되어 있는지 확인하고 싶을 때 유용합니다. 위 예제에서는 이 메서드를 사용해 고객의 전체 이름에 접수원에게 알려준 성이 포함되어 있는지 확인했습니다.

대소문자를 구분하지 않는 contains()

Java의 contains() 메서드는 대소문자를 구분합니다. 즉, 지정한 부분 문자열의 내용이 문자열에 존재하더라도 두 문자열의 대소문자가 일치해야만 true가 반환됩니다.

하지만 대소문자와 관계없이 문자열에 특정 부분 문자열이 포함되어 있는지 확인할 수 있는 방법이 있습니다. toLowerCase() 또는 toUpperCase() 메서드를 사용해 원본 문자열과 부분 문자열을 모두 소문자 또는 대문자로 변환하면, contains() 호출 시 동일한 조건으로 비교를 수행할 수 있습니다.

예를 들어, 접수원이 고객의 성을 소문자로 잘못 입력했다고 가정해 보겠습니다. 이 경우 프로그램은 다음과 같은 결과를 반환합니다.

This reservation does not exist.

두 문자열의 대소문자가 다르기 때문에 프로그램은 이를 같은 이름으로 인식하지 못합니다. 하지만 toLowerCase()나 toUpperCase()를 사용하면 두 문자열의 대소문자를 일관되게 변환할 수 있습니다.

레스토랑 예제로 돌아가 보겠습니다. 접수원이 예약을 조회할 때 대소문자를 잘못 입력하더라도 예약이 존재하지 않는 것으로 처리되지 않도록, 모든 검사를 대소문자 구분 없이 수행하고 싶다고 가정해 보겠습니다. 다음은 toLowerCase()를 활용해 contains() 메서드로 대소문자 구분 없는 검사를 수행하는 예시입니다.

class CheckReservation {
	public static void main(String[] args) {
		String name_on_file = "Jeff Clinton".toLowerCase();
		String name_given_to_clerk = "clinton".toLowerCase();

		if (name_on_file.contains(name_given_to_clerk)) {
			System.out.println("This reservation is confirmed.");
		} else {
			System.out.println("This reservation does not exist.");
		}
	}
}

이 예제에서는 몇 가지 변경 사항이 있습니다. 첫째, 접수원에게 알려준 이름을 모두 소문자로 변경했습니다(값이 Clinton에서 clinton으로 바뀌었습니다). 둘째, toLowerCase() 메서드를 사용해 name_on_filename_given_to_clerk 변수를 모두 소문자로 변환했습니다.

코드를 실행하면 다음과 같은 결과가 출력됩니다.

This reservation is confirmed.

name_on_filename_given_to_clerk 변수가 서로 다른 대소문자를 사용하더라도, toLowerCase() 메서드가 두 변수를 모두 소문자로 변환하기 때문에 동일한 조건에서 비교를 수행할 수 있습니다.

toUpperCase() 메서드도 위에서 사용한 toLowerCase()와 같은 방식으로 활용할 수 있으며, 마찬가지로 두 문자열 간의 동등한 비교를 가능하게 합니다.

toUpperCase() 및 toLowerCase() 메서드에 대해 더 자세히 알고 싶다면 관련 튜토리얼을 참고해 보시기 바랍니다.

마무리

Java의 String contains() 메서드는 문자열에 특정 부분 문자열이 포함되어 있는지 확인할 때 사용합니다.

이 글에서는 Java에서 contains() 메서드를 사용하는 방법을 예제와 함께 살펴보았습니다. 또한 toUpperCase()와 toLowerCase() 메서드를 활용해 대소문자를 구분하지 않는 검사를 수행하는 방법도 함께 다루었습니다.

이제 Java 문자열 contains() 메서드를 전문가처럼 활용할 준비가 되셨습니다!