Java에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법

Mohammad Irfan 2023년10월12일
  1. Java에서 문자열에 하위 문자열이 포함되어 있는지 확인
  2. Java에서indexOf()방식을 사용하여 부분 문자열 찾기
  3. Java에서 Regex를 사용하여 부분 문자열 찾기
  4. Java에서 Apache를 사용하여 부분 문자열 찾기
  5. Java Regex를 사용하여 부분 문자열 찾기
Java에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법

이 튜토리얼에서는 문자열이 Java에서 하위 문자열을 포함하는지 확인하는 방법을 소개하고이를 이해하기위한 몇 가지 예제 코드를 나열합니다.

Java에서 문자열에 하위 문자열이 포함되어 있는지 확인

다른 String의 일부인 String은 해당String 객체의 하위 문자열로 알려져 있습니다. 문자열은 일련의 문자이며 Java에서 변경할 수없는 객체입니다. 주어진 문자열에 부분 문자열이 존재하는지 확인해 봅시다.

이 예에서는 문자열의 하위 문자열이 발견되면 true를 반환하는 String클래스의 contains()메서드를 사용합니다. 대소 문자 무시를 확인하기 위해toLowerCase()메소드를 사용합니다.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr = str.contains(subStr);
    System.out.println(containsStr);

    // Check with string ignore case
    subStr = "Daa";
    containsStr = str.toLowerCase().contains(subStr.toLowerCase());
    System.out.println(containsStr);

    subStr = "baa";
    containsStr = str.toLowerCase().contains(subStr.toLowerCase());
    System.out.println(containsStr);
  }
}

출력:

true
true
false

Java에서indexOf()방식을 사용하여 부분 문자열 찾기

String 클래스의indexOf()메소드는 문자열에서 하위 문자열의 인덱스를 가져 오는 데 사용되지만 하위 문자열을 찾는 데 사용할 수 있습니다.

여기서 우리는 부분 문자열 인덱스가 부분 문자열이 발견되었음을 의미하는 것보다 크거나 같은지 확인합니다. 문자열에 하위 문자열이 없으면 -1을 반환합니다.

예제 및 출력을 참조하십시오.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr = str.indexOf(subStr) >= 0;
    System.out.println(containsStr);

    // check with string ignore case
    subStr = "DaA";
    containsStr = str.toLowerCase().indexOf(subStr.toLowerCase()) >= 0;
    System.out.println(containsStr);

    subStr = "aaa";
    containsStr = str.indexOf(subStr) >= 0;
    System.out.println(containsStr);
  }
}

출력:

true
true
false

Java에서 Regex를 사용하여 부분 문자열 찾기

정규식을 인수로 사용하고true 또는false를 반환하는String 객체의matches()메서드를 사용할 수도 있습니다.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr = str.matches("(?i).*" + subStr + ".*");
    System.out.println(containsStr);

    subStr = "daa";
    containsStr = str.matches("(?i).*" + subStr + ".*");
    System.out.println(containsStr);
  }
}

출력:

true
true

Java에서 Apache를 사용하여 부분 문자열 찾기

Apache공용 라이브러리를 사용하는 경우 하위 문자열이 발견되면 true를 반환하고 그렇지 않으면 false를 반환하는 StringUtils클래스의 containsIgnoreCase()메서드를 사용할 수 있습니다. 아래 예를 참조하십시오.

import org.apache.commons.lang3.StringUtils;

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr = StringUtils.containsIgnoreCase(str, subStr);
    System.out.println(containsStr);

    subStr = "DAa";
    containsStr = StringUtils.containsIgnoreCase(str, subStr);
    System.out.println(containsStr);

    subStr = "AcWF";
    containsStr = StringUtils.containsIgnoreCase(str, subStr);
    System.out.println(containsStr);
  }
}

출력:

true
true
false

Java Regex를 사용하여 부분 문자열 찾기

Java는 여러 클래스와 메소드를 포함하는regex 패키지를 제공합니다. 이 클래스 중 하나는compile(),quote(),matcher()등과 같은 두 가지 메서드를 제공하는Pattern 클래스입니다. 여기서는 이러한 메서드를 사용하여 하위 문자열을 찾습니다.

import java.util.regex.Pattern;

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr =
        Pattern.compile(Pattern.quote(subStr), Pattern.CASE_INSENSITIVE).matcher(str).find();
    System.out.println(containsStr);

    subStr = "RaCA";
    containsStr =
        Pattern.compile(Pattern.quote(subStr), Pattern.CASE_INSENSITIVE).matcher(str).find();
    System.out.println(containsStr);
  }
}

출력:

true
true

관련 문장 - Java String