일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- input
- ArrayList
- 이클립스
- 이탈리아
- date
- list
- 테이블
- string
- CSS
- 인텔리제이
- 문자열
- vscode
- windows
- CMD
- Visual Studio Code
- js
- 배열
- Button
- 자바
- json
- Array
- Eclipse
- table
- 자바스크립트
- html
- Java
- IntelliJ
- Maven
- javascript
- Files
- Today
- Total
어제 오늘 내일
[Java] 구분자로 문자열 자르기 (split) 본문
지난 번에는 java.lang.String 클래스의 substring() 메소드를 이용하여
문자열을 자르는 방법을 알아보았습니다.
이번에는 구분자를 사용하여 문자열을 자르는 방법을 알아보도록 하겠습니다.
구분자로 문자열 자르기 - split()
구분자를 사용하여 문자열을 자를 때는
java.lang.String 클래스의 split() 메소드를 사용합니다.
1. Method Signature
split() 메소드는 다음과 같이 2가지 형태로 사용할 수 있습니다.
- public String[] split(String regex)
- public String[] split(String regex, int limit)
2. split(String regex)
정규식 문자열을 파라미터로 받아서,
정규식 문자열과 일치하는 부분을 중심으로 문자열을 잘라서,
잘려진 문자열들을 배열로 리턴합니다.
public String[] split(String regex)
코드 1 - 콤마+공백으로 문자열 나누기
import java.util.Arrays;
public class StringSplit {
public static void main(String[] args) {
// 1. split 할 문자열 준비
String str = "apple, banana, orange, grape";
// 2. ", "를 구분자로 문자열 split
String[] strArr = str.split(", ");
// 3. 결과 출력
System.out.println(Arrays.toString(strArr));
}
}
결과 1
[apple, banana, orange, grape]
str.split(", ");
문자열을 구분자 ", "로 나누어서, 각각의 문자열을 배열에 담아서 리턴하였습니다.
코드 2 - 공백으로 문자열 나누기 (정규식 사용)
import java.util.Arrays;
public class StringSplit {
public static void main(String[] args) {
// 1. split 할 문자열 준비
String str = "apple banana orange grape";
// 2. 공백을 의미하는 정규식("\s")을 구분자로 문자열 split
String[] strArr = str.split("\\s");
// 3. 결과 출력
System.out.println(Arrays.toString(strArr));
}
}
결과 2
[apple, banana, orange, grape]
str.split("\\s");
파라미터로 공백을 의미하는 정규식 "\s"를 전달하였습니다.
위 코드는 공백으로 문자열을 잘라서, 결과를 배열에 담아 리턴 합니다.
3. split(String regex, int limit)
split() 메소드는,
구분자 regex와 함께 limit 값을 입력 받을 수도 있습니다.
public String[] split(String regex, int limit)
limit > 0 이면,
패턴은 (limit - 1)번 만큼 적용됩니다.
그리고, 리턴 배열의 마지막 원소는, 패턴이 적용되고 난 나머지 문자열이 됩니다.
limit = 0 이면,
패턴은 횟수 제한 없이 모두 적용되고, 배열의 마지막에 빈 문자열이 올 경우 모두 삭제됩니다.
limit < 0 이면,
limit = 0 인 경우와 마찬가지로, 횟수 제한 없이 패턴이 모두 적용되지만,
limit = 0 인 경우와 다르게, 배열의 마지막에 빈 문자열이 올 경우 빈 문자열이 그대로 유지됩니다.
코드 1 - limit > 0 인 경우
public class StringSplit {
public static void main(String[] args) {
// 1. split 할 문자열 준비
String str = "apple,banana,,orange,grape,,";
// 2. ","을 구분자로 문자열 split
// 2. limit = 4
String[] strArr = str.split(",", 4);
// 3. 결과 출력
for (String s : strArr) {
System.out.println("\"" + s + "\"");
}
}
}
결과 1
"apple"
"banana"
""
"orange,grape,,"
str.split(",", 4);
구분자를 콤마(",")로 지정하고, limit 값을 4로 지정하였습니다.
구분자(",")로 문자열에서 패턴을 3번(limit - 1) 찾아서 리턴 배열에 넣고,
나머지 문자열을 리턴 배열의 마지막에 넣었습니다.
코드 2 - limit = 0 인 경우
public class StringSplit {
public static void main(String[] args) {
// 1. split 할 문자열 준비
String str = "apple,banana,,orange,grape,,";
// 2. ","을 구분자로 문자열 split
// 2. limit = 0
String[] strArr = str.split(",", 0);
// 3. 결과 출력
for (String s : strArr) {
System.out.println("\"" + s + "\"");
}
}
}
결과 2
"apple"
"banana"
""
"orange"
"grape"
str.split(",", 0);
limit 값으로 0을 지정하였습니다.
횟수 제한 없이 구분자(",")로 문자열을 잘라서 리턴 배열에 담아서 리턴하였습니다.
주의해서 볼 것은, 마지막에 들어갔어야 할 비어있는 배열 2개가 리턴 배열에 담기지 않았다는 것입니다.
limit = 0이면, 리턴 배열의 마지막에 빈 문자열이 올 경우, 모두 삭제됩니다.
코드 3 - limit < 0 인 경우
public class StringSplit {
public static void main(String[] args) {
// 1. split 할 문자열 준비
String str = "apple,banana,,orange,grape,,";
// 2. ","을 구분자로 문자열 split
// 2. limit < 0
String[] strArr = str.split(",", -1);
// 3. 결과 출력
for (String s : strArr) {
System.out.println("\"" + s + "\"");
}
}
}
결과 3
"apple"
"banana"
""
"orange"
"grape"
""
""
str.split(",", -1);
limit 값으로 음수가 입력되었습니다.
limit 값으로 음수가 입력되면, limit = 0인 경우와 마찬가지로
횟수 제한 없이 문자열을 구분자(",")로 split하여 리턴 배열에 담아줍니다.
limit = 0인 경우와 다른 점은,
리턴 배열의 마지막에, 빈 문자열이 오더라도 이 원소를 생략하지 않는다는 것입니다.
java.lang.String 클래스의 split() 메소드를 사용하여
구분자로 문자열을 자르는 방법을 알아보았습니다.
'IT > Java' 카테고리의 다른 글
[Java] 문자열에 특정 문자 포함 여부 확인하기 - contains, indexOf, matches (3) | 2021.04.28 |
---|---|
[Java] String <-> boolean 변환하기 (0) | 2021.04.28 |
[Java] 문자열 각 단어 첫글자 대문자로, 나머지는 소문자로 변환하기 (0) | 2021.04.27 |
[Java] 문자열 첫글자 대문자로, 나머지 글자는 소문자로 변환하기 (0) | 2021.04.27 |
[Java] 문자열 자르기 (substring) (0) | 2021.04.27 |