[Java] contains, indexOf, matches

Jisoo Choi·2021년 12월 6일
1

Java

목록 보기
2/2

Java 문자열 String 클래스에서 특정 문자가 포함되어 있는지 확인하기 위해 사용하는 3가지 메서드를 사용할 수 있다.

1. contains()

  • boolean contains(Charequence s)
  • 대상 문자열 혹은 리스트에 특정 문자열이 포함되어 있는지 확인하는 메서드
    • 특정 문자열이 포함되어 있으면 true, 없으면 false를 리턴
  • 대소문자를 구분함

example

public class ContainsTest{ 
  public static void main(String[] args){ 

  String str = "my java test"; 
  
  System.out.println(str.contains("java")); 	 // true 
  System.out.println(str.contains(" my")); 	 // false 
  System.out.println(str.contains("JAVA")); 	 // false 
  System.out.println(str.contains("java test")); // true 
  System.out.println(str.contains(" ")); 	 // true 
  } 
}

2. indexOf()

  • int indexOf(int ch)
    int indexOf(int ch, int fromIndex)
    int indexOf(String str)
    public int indexOf(String str, int fromIndex)

  • 검색하는 문자열이 원본 문자열에서 가장 처음 나타나는 index를 찾아서 index 위치를 리턴
    • 찾는 문자열이 없으면 -1을 반환

example

public class StringContainsString {
  public static void main(String[] args) {
  
    String str = "hello Java!";
    
    // indexOf(String str)
    System.out.println(str.indexOf("he"));   // 0
    System.out.println(str.indexOf("Java")); // 6
    System.out.println(str.indexOf("java")); // -1
    System.out.println(str.indexOf(" "));    // 5
    
    // indexOf(int ch)
    System.out.println(str.indexOf('l'));    // 2
    
    // indexOf(int ch, int fromIndex)
    /* 두번째 파라미터는 start index이므로 index 3부터 문자열을 찾는다. */
    System.out.println(str.indexOf('l', 3)); // 3
    System.out.println(str.indexOf('l', 4)); // -1
  }
}

문자열을 검색할 때 정확한 위치를 알고자 하면 indexOf()를, 단순히 포함 여부만을 알고자 하면 contains() 메서드를 사용한다.

3. matches()

  • boolean matches(String regex)
  • 정규식을 이용하여 문자열에 정규식과 일치하는 부분이 있는지 체크하는 메서드
    • 특정 문자열을 검색할 때 보다는 한글, 숫자 등과 같은 형태의 텍스트가 존재하는지 확인할 때 사용
    • 찾는 문자열이 있으면 true, 없으면 false을 반환

example

public class StringContainsString {
  public static void main(String[] args) {
  
    String str = "hello Java!";
    
    System.out.println(str.matches("he")); 	   // false
    System.out.println(str.matches("(.*)he(.*)")); // true
  }
}

설명

- str.matches("he");
문자열이 정확히 "he"여야만 true를 리턴한다.

- str.matches("(.*)he(.*)");
(.*)는 0번 이상의 문자가 나오는 경우를 나타내는 정규식이다.
즉, "(.*)he(.*)" -> 정규식은 문자의 어느 곳에든 "he"라는 문자열이 나올 경우 true를 리턴한다.

* 자주 사용하는 정규식 패턴

정규식 패턴
숫자만^[0-9]*$
영문만^[a-zA-Z]*$
영문만, 띄어쓰기가능/^[a-zA-Z\s]+$/
한글만^[가-힣]*$
한글만, 띄어쓰기가능/^[가-힣\s]+$/
한글 & 영문만/^[가-힣a-zA-Z]+$/
영문 & 숫자만^[a-zA-Z0-9]*$
E-Mail^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
휴대폰^01(?:0
일반전화^\d{2,3} - \d{3,4} - \d{4}$
URL/^(file
주민등록번호\d{6} - [1-4]\d{6}
IP 주소([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3})


Reference

profile
👩‍🚀 No worries! Just record

0개의 댓글