Java/문자열

[Java]문자열 분리하는 방법

DevStory 2022. 8. 11.

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, , , ]
반응형

댓글