Study/java

[Java] String - regionMatches() 부분 문자열 비교

regionMatches

이 메소드는 영역을 매칭해서 서로 같은지 판별합니다.

실제 공식문서에서도 Tests if two string regions are equal.라고 정의하고 있습니다.

 

2가지 방식으로 사용합니다.

regionMatches(int toffset, String other, int ooffset, int len)

regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

대소문자를 무시하는 변수의 존재 외에는 차이가 없습니다.

 

변수의 의미는 다음과 같습니다.

toffset : 기준 문자열에서 매칭을 시작할 인덱스 번호

other : 매칭시킬 문자열

ooffset : 매칭 문자열에서 매칭을 시작할 인덱스 번호

len : 매칭 문자열의 길이

 

 

 

 

예제

실제 사용 방식은 이렇습니다.

String str = "I Like Peach!";
String s1 = "peach";
System.out.println(str.regionMatches(7, s1, 0, 5));
System.out.println(str.regionMatches(true, 7, s1, 0, 5));

regionMatches 사용결과

코드를 풀어보면 toffset이 7이기 때문에 "I Like Peach!"의 7번째 인덱스 문자인 "P"부터 판별하게 됩니다.

other인 "peach"와 매칭을 하게 됩니다.

ooffset이 0이기 때문에 "peach"의 0번째부터 매칭하게 됩니다.

len이 5이기 때문에 "peach"에서 5만큼 매칭합니다.

 

간단하게 설명하면, str의 7번째부터의 문자들이 s1의 0~5번째 문자와 같은지 판별한다는 의미입니다.

 

len에 대해서 추가 설명을 하자면 무조건 other의 길이와 같을 필요는 없습니다.

예시의 s1은 5글자이지만 len을 3까지 하면 인덱스 0부터 3까지 문자만 비교하게 됩니다.

 

기준 문자열은 시작 지점만 정할수 있고 끝 지점은 못 정하는 것에 비해 매칭 문자열은 시작과 끝을 모두 정할 수 있습니다.

  

matches와의 차이

matches 메소드는 정규식을 가지고 일치 여부를 판별합니다.

예를 들면, 이 문자가 숫자로만 이루어져 있는지 판별하고 싶을 때는 matches에 정규식을 사용하는 것이 좋습니다.

만약 문자열 안에 특정 문자열이 포함되어있는지 알고싶다면 regionMatches를 사용합니다.