Java

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

ImKDM 2022. 8. 31. 13:15
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, , ]