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, , ]