- split을 이용한 문자열 자르기 -
split()
- String[] split(String regex)
- String[] split(String regex, int limit)
- split() 함수는 입력받은 정규표현식 또는 특정 문자를 기준으로 문자열을 나누어 배열에 저장하여 리턴한다.
예제 1) String[] split(String regex)
public class SplitTest{
public static void main(String[] args){
String str1 = "my-java-test";
String[] splitTest = str1.split("-");
System.out.println( splitTest[0] ); // my
System.out.println( splitTest[1] ); // java
System.out.println( splitTest[2] ); // test
}
}
split 에 입력받은 특정 문자 "-"를 기준으로 나뉘어져 my / java / test 이렇게 세 개로 나뉘어 배열에 저장되었다.
예제 2) String[] split(String regex, int limit)
public class SplitTest{
public static void main(String[] args){
String str2 = "my,java,test";
String[] splitTest = str2.split("," , 2);
System.out.println( splitTest[0] ); // my
System.out.println( splitTest[1] ); // java,test
}
}
이번 예제에서는 두 번째 인자 값을 추가로 넣어주었는데 두 번째 인자 값이 의미하는 것은 배열의 크기를 지정하는 것이다.
무슨 소리냐면 원래대로라면 예제 1)처럼 배열의 크기가 3으로 각각 [my, java, test] 이렇게 들어갔어야 하는 게
배열의 크기를 2로 지정하였으므로 배열의 크기가 2인 배열 즉 두 개의 값만 들어가게 설정해놓은 것이다.
쉼표를 기준으로 분리되면 ['my', 'java, test']로 두 개가 들어가는 것이다.
마지막으로 실수를 많이 하고 난 왜 안 되는 거지? 하라는 데로 했는데 같은 의문을 가질 수 있는 예제를 보자면
예제 3) 메타 문자 기준 문자열 자르기
public class SplitTest{
public static void main(String[] args){
String str3 = "my.java.test";
String[] splitTest = str3.split(".");
System.out.println( splitTest[0] ); //
System.out.println( splitTest[1] ); //
}
}
" . " 을 기준으로 한번 나누어 보자... 그러면 아무값도 나오지 않는데 " . " 은 다른 의미로 받아들이기 때문이다
그 외에 " ? " , " + " , " * " 등의 메타 문자는 에러가 뜰 텐데 이러한 문자들은 모두 이스케이프 처리
즉 \\(역슬래쉬 두번)를 앞에 입력해주면 처리가 된다.
String str3 = "my.java.test";
String[] splitTest = str3.split("\\.",2);
System.out.println( splitTest[0] ); // my
System.out.println( splitTest[1] ); // java.test
이런 식으로 결과가 나올 것이다.
물론 이런 방식도 있지만 내가 알기론 대부분 replaceAll() 같은 것을 사용하여 전부 다른 것으로 바꿔주고 나누는 방식을 많이 사용하는 것으로 알고 있다.
댓글