안녕하세요
프로그래밍을 하다보면 문자열을 특정 기준에 따라 잘라서 보고 싶은 경우가 있습니다
그 경우 String 기본 메서드인 split를 사용하여 자를 수가 있습니다
이번 포스팅에서는 split에 대해서 알아보겠습니다!
목차
Split이란?
split(String Rex);
split(String regex, int limit);
Split이란?
Split은 구분자를 기준으로 문자열을 잘라 배열로 입력할 때 사용하는 메서드입니다
Split의 사용방법에는
split(String regex);
-> 구분자를 바탕으로 배열 형식으로 문자열을 잘라줍니다
split(String regex, int limit);
-> 위와 마찬가지로 구분자를 바탕으로 배열 형식으로 문자열을 자르지만 limit 수만큼 잘라줍니다
두 가지가 있습니다
split(String Rex);
예제를 통해서 split의 사용방법에 대해서 알아보겠습니다!
[" "으로 분리]
먼저 공백 " "을 사용하여 문자열을 분리합니다
public class Split {
public static void main(String[] args) {
String str = "Hello World";
String[] ArraysStr = str.split(" ");
for(String s : ArraysStr)
System.out.println(s);
}
}
결과 화면
Hello World가 공백을 기준으로 분리된 모습입니다
[","으로 분리]
다음에는 ","를 기준으로 분리하겠습니다
public class Split {
public static void main(String[] args) {
String str = "ABCDEFG,HIJKLMN,OPQRSTU,VWXYZ";
String[] ArraysStr = str.split(",");
for(String s : ArraysStr)
System.out.println(s);
}
}
결과 화면
[여러 개의 구분자를 두어서 분리]
구분자를 하나가 아닌 여러 개를 사용하여 분리도 가능합니다
아래 예제처럼 구분자의 사이에 | 를 사용하여 구분자|구분자|구분자 이렇게 여러 개의 구분자를 사용이 가능합니다
, @ - 공백을 구분자로 아래의 내용을 분리합니다
public class Split {
public static void main(String[] args) {
String str = "안녕하세요,이메일주소는 hongil@naver.com";
String[] ArraysStr = str.split(",|@|-| ");
for(String s : ArraysStr)
System.out.println(s);
}
}
결과 화면
[하나의 값만 가져오기]
이번에는 배열이 아닌 하나의 값만 가져오고 싶은 경우에 대해서 알아보겠습니다
아래처럼 split 이후에 [숫자]를 사용하면 해당하는 순서의 값만 가져옵니다
public class Split {
public static void main(String[] args) {
String str = "111-2222-3333";
String ArraysStr = str.split("-")[1];
System.out.println(ArraysStr);
}
}
결과 화면
위의 소스를 실행하면 아래처럼 두 번째 배열인 "2222"만 가져옵니다
split(String regex, int limit);
split 문자열 메서드에서 limit을 추가하면 limit만큼만 문자열 나눠줍니다
바로 예제를 통해서 확인해보겠습니다
제가 궁금해서 여러 가지 경우의 수를 테스트해봤습니다
public class Split {
public static void main(String[] args) {
String str = "123 4 5 67 890 ";
String[] LimitThree = str.split(" ", 3);
String[] LimitExceed = str.split(" ", 10);
String[] LimitZero = str.split(" ", 0);
String[] LimitMinus = str.split(" ", -1);
System.out.println("----LimitThree----");
for(int i = 0; i < LimitThree.length; i++)
System.out.println(i + "배열 : " + LimitThree[i]);
System.out.println("----LimitExceed----");
for(int i = 0; i < LimitExceed.length; i++)
System.out.println(i + "배열 : " + LimitExceed[i]);
System.out.println("----LimitZero----");
for(int i = 0; i < LimitZero.length; i++)
System.out.println(i + "배열 : " + LimitZero[i]);
System.out.println("----LimitMinus----");
for(int i = 0; i < LimitMinus.length; i++)
System.out.println(i + "배열 : " + LimitMinus[i]);
}
}
위의 코드의 결과 화면입니다
1. String[] LimitThree = str.split(" ", 3);
3개의 배열로 나눈 것을 확인할 수 있습니다
나머지 문자열은 마지막 배열에 그대로 표기해줍니다
2. String[] LimitExceed = str.split(" ", 10);
Limit이 나눈 값의 범위를 초과했을 때 입니다
전 Index에러가 뜰 줄 알았는데 일반 split할 때처럼 보여줍니다
3. String[] LimitZero = str.split(" ", 0);
Limit을 0으로 넘겨주는 경우 나눈 값이 ""로 나오는 경우 배열에서 제외시켜버립니다
4. String[] LimitZero = str.split(" ", -1);
Limit을 마이너스로 지정한 경우입니다
Index에러가 뜰 줄 알았는데 일반 split()을 사용할 때와 똑같은 값을 출력해주네요
여기까지 자바 기본문자열 메서드 split에 대해서 알아봤습니다
자바 공부를 하는 분들에게 제 포스팅이 도움이 되었으면 좋겠습니다!
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] this와 super 정의 및 사용법 (2) | 2021.05.17 |
---|---|
[JAVA] 문자열 공백제거 Trim()에 대해서 알아보자! (0) | 2021.05.17 |
[백준알고리즘/문자열] 1152번 문제 : 단어의 개수(자바/JAVA) (0) | 2021.05.17 |
[JAVA] 문자열 반복 메서드 repeat 대해서 알아봅시다 (0) | 2021.05.16 |
[JAVA] Arrays.fill() 사용 방법(배열의 값 일괄초기화) (0) | 2021.05.16 |