그동안 split 은 단순히 구분자를 이용하여 문자열 자르는 용도로만 써오다가
코딩테스트 문제를 풀다가 split 의 기능을 제대로 알게 되었다.
문제
주어진 문자열이 예를들어String str = "a-b--c-d--" ; 일경우에
split 을 하여 마지막 빈 문자열도 배열에 담아야 한다.
해결
split() 메소드는 2가지 메서드로 분류된다.
- public String[] split(String regex)
- public String[] split(String regex, int limit)
첫번째 방법으로 문자열을 자르면[a, b, , c, d] 로 마지막 빈 문자열을 무시한다.
두번째 방법은 양수,0,음수 일때 세가지로 분류된다.limit > 0
limit - 1 만큼 패턴이 적용되고, 나머지 모든 문자열이 마지막 원소가 된다.limit = 0
패턴이 모든 문자열에 적용되지만, 마지막에 빈 문자열이 올 경우 배열에 담기지 않는다.limit < 0
패턴이 모든 문자열에 적용되고, 마지막에 빈 문자열에 올 경우에도 그대로 배열에 담긴다.
코드
@Test
public void stringSplit() {
String str = "a-b--c-d--";
String[] arr1 = str.split("-");
System.out.println("기본 split : " + Arrays.toString(arr1));
String[] arr2 = str.split("-",3);
System.out.println("limit 이 양수일때 : " +Arrays.toString(arr2));
String[] arr3 = str.split("-",0);
System.out.println("limit 이 0일 때 : " +Arrays.toString(arr3));
String[] arr4 = str.split("-",-1);
System.out.println("limit 이 음수일때 : " +Arrays.toString(arr4));
}결과
기본 split : [a, b, , c, d]
limit 이 양수일때 : [a, b, -c-d--]
limit 이 0일 때 : [a, b, , c, d]
limit 이 음수일때 : [a, b, , c, d, , ]양수 일때는 limit-1 인 2번째 index 까지 a,b 까지 "-" 패턴이 적용되어 배열에 담기고
나머지 -c-d-- 가 마지막 원소로 담긴다.
0 일때는 모든 문자열에 "-" 패턴이 적용되지만, 마지막에 빈 문자열이 삭제되어 배열에 담긴다.
음수 일때는 모든 문자열에 "-" 패턴이 적용되고, 마지막 빈 문자열 모두 배열에 담긴다.
'Java' 카테고리의 다른 글
| Java 에서 XML 두개의 파일 비교 하기 - XMLUnit (0) | 2023.04.06 |
|---|---|
| [Java] 제곱근(루트) 구하기 / Math.sqrt() (0) | 2022.10.18 |
| [Java] 사용자 Web/App/Mobile 접속 구분하기 (0) | 2022.10.14 |
| [Java] 대소문자 확인 및 대소문자 변환 (0) | 2022.10.14 |
| [Java] List to Array(배열) 또는 Array(배열) to List (0) | 2022.10.13 |
댓글