[Java] 문자열에 특정 문자 포함 여부 반환하기(contains, indexOf, matches, chars())

SeoYoon·2024년 11월 19일

💗JAVA

목록 보기
19/21

📝1. contains() 메서드

  • 기능 : 문자열에 특정 문자열(부분 문자열)이 포함되어 있는지 확인

  • 반환값 : boolean (true or false)

  • 사용 예시

String str = "Hello, World!";
boolean contains = str.contains("World");
System.out.printlin(contains); // 출력 : true
  • 장점 : 직관적이고 간단하며, 특정 문자열이 포함되어 있는지만 확인하면 되는 경우 적합

  • 단점 : 단일 문자 확인 시에도 문자열로 취급해야 함('C' 대신 "C" 사용)



2. indexOf() 메서드

  • 기능 : 특정 문자 또는 문자열이 처음 등장하는 인덱스를 반환

  • 특징 : 값이 -1이면 해당 문자/문자열이 포함되어 있지 않음을 의미

  • 사용 예시

String str = "Hello, World!";
int index = str.indexOf('o'); // 문자 'o'의 위치 찾기
System.out.println(index); // 출력 : 4(인덱스는 0부터 시작)

boolean contains = str.indexOf("World") != -1; // "World" 포함 여부
System.out.println(contains); // 출력 : true
  • 장점 : 특정 문자/문자열의 위치를 알고 싶을 때 유용함
  • 단점 : 포함 여부만 확인하기 위해 사용하면 코드가 다소 길어질 수 있음


3. matches() 메서드

  • 기능 : 문자열이 특정 정규식(Regular Expression)을 만족하는지 확인

  • 반환값 : boolean

  • 사용 예시

String str = "Hello, World!";
boolean contains = str.matches(".*World.*"); // "World"를 포함하는지 확인
System.out.println(contains); // 출력 : true
  • 장점 : 정규식을 활용하여 복잡한 패턴 매칭이 가능
  • 단점 : 단순 포함 여부 확인에는 오버헤드가 발생할 수 있음


4. chars() 스트림 활용(Java 8 이상)

  • 기능 : 문자열을 스트림으로 변환하여 특정 문자가 포함되어 있는지 확인

  • 특징 : 람다식이나 스트림 API를 사용할 수 없음

  • 사용 예시

String str = "Hello, World!";
boolean contains = str.chars().anyMatch(c -> c == 'o'); // 'o'포함 여부
System.out.println(contains); // 출력 : true
  • 장점 : 현대적인 코딩 스타일
  • 단점 : 단순 작업에는 가독성이 떨어질 수 있음


5. 정리

  • contains() : 단순히 포함 여부만 확인할 때
  • indexOf() : 특정 문자/문자열의 위치를 알고 싶을 때
  • matches() : 정규식을 활용해야 할 때
  • chars() : 함수형 프로그래밍 스타일을 선호할 때
String str = "Programming is fun!";
char target = 'g';

// 1. contains (단일 문자 확인은 문자열로 변환 필요)
System.out.println(str.contains("g"); // true

// 2. indexOf
System.out.println(str.indexOf('g') != -1); // true

// 3. matches
System.out.println(str.matches(".*g.*")); // true

// 4. chars 스트림
System.out.println(str.chars().anyMatch(c -> c == 'g')); // true
profile
공부 기록

0개의 댓글