본문 바로가기

Java

[Java] String 클래스의 .split() 메서드 사용하기

728x90

 

 

기본적으로 String 클래스의 split() 메서드는 'String 배열'을 반환한다. 다시 말해 주어진 조건을 기준으로 String 객체를 나누고, 나눠진 각각의 원소들을 String 배열의 요소로 넣는 것이다.

 

String str = "010-1234-5678";
String[] nums = str.split("-");   //  매개 변수는 String 형이다.

 

해당 실행값은 [ 010,  1234,  5678 ] 이 된다.

 

만약 String 객체가 있는데 각 문자 하나씩 String[] 로 만들고 싶으면 어떻게 해야할까?

아주 간단하다. split() 메서드의 매개변수에 "" 을 넣으면 된다. 그러면 String 객체의 한 문자씩 String 배열의 원소로 넣어진다.

 

String str = "1245741159";
String[] arrStr = str.split("");

 

해당 실행값은 [1,  2,  4,  5,  7,  4,  1,  1,  5,  9] 이 된다. 

 

해당 배열 값들을 정렬하기 위해선 'Arrays.sort()' 메서드를 이용한다.

 

 

split("") split("  ") 의 차이는 문자열 배열을 만드는 요소의 구분을 가른다.

 

split("") String 문자열을 이루는 각 문자를 하나씩 원소로 본다. 따라서 '공백' 이 있어도 그 공백마저 '문자열'로 본다. 그래서 공백을 포함한 한 단어씩 String 배열로 만든다.

 

반면 split("  ")'공백'을 기준으로 문자열을 나눈다. 따라서 빈 칸 하나를 기준으로 문자열을 나누는 것이다. 만약 빈 칸이 두개 있으면 한 칸은 기준으로 사용되고, 나머지 한 칸만 문자열로 본다. 그리고 마지막 공백은 생략한다.

 

split("  ",  - 1) 은 마지막 공백을 유지한다. 

 

String s = "  for  the last week  ";

String[] str1 = s.split("");
String[] str2 = s.split(" ");
String[] str3 = s.split(" ", -1);

System.out.println(Arrays.toString(str1));
// [ ,  , f, o, r,  ,  , t, h, e,  , l, a, s, t,  , w, e, e, k,  ,  ]

System.out.println(Arrays.toString(str2));
// [, , for, , the, last, week]

System.out.println(Arrays.toString(str3));
// [, , for, , the, last, week, , ]