split 메서드
Java의 String 클래스에서 제공하는 split() 메서드는 특정 문자열 또는 정규식을 기반으로 문자열을 분리합니다. 분리된 문자열은 배열로 구성되며, 결과적으로 분리된 문자열 배열이 반환됩니다.
Stirng 클래스에 존재하는 split() 메서드는 두 가지 오버로드된 버전이 존재합니다.
public String[] split(String regex);
public String[] split(String regex, int limit);
첫 번째 split() 메서드는 특정 문자열 또는 정규식을 기반으로 문자열을 분리합니다. 특정 문자열 또는 정규식을 만족하는 문자열이 없는 경우 원래 문자열을 반환합니다.
두 번째 split() 메서드는 분리되는 문자열의 개수를 제한합니다.
예제 1. 기본 사용 방법
다음 예제는 특정 문자열 기준으로 문자열을 자릅니다. split() 메서드에서 반환된 배열의 크기와 분리된 문자열을 확인할 수 있습니다.
public static void main(String args[]) {
String strValue = "One, Two, Three, Four, Five";
String[] strArray = strValue.split(", " );
System.out.println("strArray.length: " + strArray.length);
System.out.println(Arrays.toString(strArray));
}
[실행 결과]
strArray.length: 5
[One, Two, Three, Four, Five]
예제 2. 정규식 사용
split() 메서드에 정규식을 전달하면 문자열을 분리할 수 있습니다.
정규식을 사용하면 다양한 기준으로 문자열을 분리할 수 있습니다.
다음 예제는 정규식을 사용하여 문자열을 "_", "#", "|" 기준으로 분리합니다.
public static void main(String args[]) {
String strValue = "One_Two#Three|Four#Five";
String[] strArray = strValue.split("[_#|]" );
System.out.println("strArray.length: " + strArray.length);
System.out.println(Arrays.toString(strArray));
}
[실행 결과]
strArray.length: 5
[One, Two, Three, Four, Five]
예제 3. 분리되는 개수를 제한
분리되는 문자열의 개수를 제한하고 싶은 경우 split() 메서드를 사용합니다.
문자열 strValue를 ", "를 기준으로 분리하면 다음과 같이 총 5개의 문자열로 분리되어야 합니다.
String strValue = "One_Two_Three_Four_Five";
String[] strArray = strValue.split("_" );
[실행 결과]
[One, Two, Three, Four, Five]
하지만, 다음과 같이 두 번째 매개변수로 분리되는 문자열의 개수를 3으로 설정하면 3개의 요소만 출력됩니다.
public static void main(String args[]) {
String strValue = "One_Two_Three_Four_Five";
String[] strArray = strValue.split("_", 3 );
System.out.println("strArray.length: " + strArray.length);
System.out.println(Arrays.toString(strArray));
}
[실행 결과]
strArray.length: 3
[One, Two, Three_Four_Five]
예제 4. 0 또는 음수를 전달
split() 메서드에 분리되는 문자열의 개수를 0으로 전달하는 경우 매개변수 한 개를 가지는 split() 메서드와 동일한 결과를 출력합니다.
public static void main(String args[]) {
String strValue = "One_Two_Three_Four_Five___";
String[] strArray_limitNo = strValue.split("_");
String[] strArray_limitZero = strValue.split("_", 0 );
System.out.println("strValue.split(\"_\") 결과");
System.out.println(Arrays.toString(strArray_limitNo));
System.out.println("\nstrValue.split(\"_\", 0 ) 결과");
System.out.println(Arrays.toString(strArray_limitZero));
}
[실행 결과]
strValue.split("_") 결과
[One, Two, Three, Four, Five]
strValue.split("_", 0 ) 결과
[One, Two, Three, Four, Five]
하지만, split() 메서드에 분리되는 문자열의 개수로 음수를 전달하는 경우에는 다른 결과를 출력합니다.
다음 예제는 원본 문자열 뒤에 구분 기준이 존재하며, split() 메서드에 분리되는 문자열의 개수로 음수를 전달합니다.
public static void main(String args[]) {
String strValue = "One_Two_Three_Four_Five___";
String[] strArray_limitNo = strValue.split("_");
String[] strArray_limitZero = strValue.split("_", 0 );
String[] strArray_limitMinus = strValue.split("_", -20 );
System.out.println("strValue.split(\"_\") 결과");
System.out.println(Arrays.toString(strArray_limitNo));
System.out.println("\nstrValue.split(\"_\", 0 ) 결과");
System.out.println(Arrays.toString(strArray_limitZero));
System.out.println("\nstrValue.split(\"_\", -20 ) 결과");
System.out.println(Arrays.toString(strArray_limitMinus));
}
[실행 결과]
strValue.split("_") 결과
[One, Two, Three, Four, Five]
strValue.split("_", 0 ) 결과
[One, Two, Three, Four, Five]
strValue.split("_", -20 ) 결과
[One, Two, Three, Four, Five, , , ]
'Java > 문자열' 카테고리의 다른 글
[Java]문자열 위치 찾는 방법 (0) | 2022.08.13 |
---|---|
[Java]문자열 연결하는 방법 (0) | 2022.08.13 |
[Java]StringBuilder 비어 있는지 확인하는 방법 (0) | 2022.06.23 |
[Java]문자열 상수 풀(String Constant Pool)이란? (1) | 2022.05.19 |
[Java]문자열을 문자열 배열로 변환(String to String Array) (0) | 2022.05.07 |
댓글