[Java] 문자열 자르기 - split

2020. 12. 16. 23:19프로그래밍 언어/Java

 

지난 시간에는 index를 지정하여 문자열을 자르는 substring을 알아보았습니다.

이번 시간에는 특정 문자를 지정하여 여러 개의 문자열로 자르는 split을 알아보도록 하겠습니다.

 

문자열 사과, 배, 귤, 바나나, 딸기, 수박

과일 이름을 여러 개 가지고 있는 문자열을 생각해보도록 하겠습니다.

각 과일을 구분하는 것(구분자, delimeter)은 ,(쉼표) 입니다.

쉼표 기준으로 문자열을 자른다고 하면 쉽게 과일 이름을 뽑아낼 수 있습니다.

문자열을 자른 결과를 String 배열인 results[]에 저장한다고 가정하면 아래 표와 같이 됩니다.

results[0] 사과
results[1]
results[2]
results[3] 바나나
results[4] 딸기
results[5] 수박

 

Java API

String 클래스의 split 함수는 2가지 형태로 제공되고 있습니다.

String[] split(String regex)

/*
파라미터: 
  regex - 문자열을 자르기 위한 구분자(delimiter), 구분자는 정규표현식으로 지정합니다.
*/

String[] split(String regex, int limit)

/*
파라미터: 
  regex - 문자열을 자르기 위한 구분자(delimiter), 구분자는 정규표현식으로 지정합니다.
  limit - 구분자(delimiter)로 문자열 자르는 최대횟수
*/

 

사용법

과일 예제로 간단하게 사용법을 알아보겠습니다.

대부분의 경우 첫번째 API를 사용하여 구분자를 지정해서 구분자 기준으로 모든 문자를 잘라냅니다.

String str = "사과, 배, 귤, 바나나, 딸기, 수박";
String[] results = str.split(",");

// ,로 구분한 모든 문자열 출력
for (int i = 0; i < results.length; i++) {
	System.out.println("results[" +i + "] = " + results[i]);
}

// 출력
results[0] = 사과
results[1] =  배
results[2] =  귤
results[3] =  바나나
results[4] =  딸기
results[5] =  수박

 

2번째 API는 잘 안 쓰이는 API이므로 궁금하신 분들만 보시면 될 듯 합니다. 

문자열을 잘라서 생성되는 배열의 개수를 limit 숫자로 지정합니다.

아래 예제는 4를 지정하여 4개의 배열로 생성합니다.

마지막 배열은 더 이상 구분자 기준으로 자르지 않기 때문에 남아있는 모든 문자열을 그대로 가지고 있습니다.

 

String str = "사과, 배, 귤, 바나나, 딸기, 수박";

// 문자열을 자른 결과가 총 4개의 배열로 생성됩니다.
String[] results = str.split(",", 4);

for (int i = 0; i < results.length; i++) {
	System.out.println("results[" +i + "] = " + results[i]);
}

// 출력
results[0] = 사과
results[1] =  배
results[2] =  귤
results[3] =  바나나, 딸기, 수박

 

 

자주 사용하는 활용예제

split의 경우 대부분 공백 기준으로 자르는 경우가 많습니다.

String str = "사과 배 귤 바나나 딸기 수박";
String[] results = str.split(" ");

for (int i = 0; i < results.length; i++) {
	System.out.println("results[" +i + "] = " + results[i]);
}

// 출력
results[0] = 사과
results[1] = 배
results[2] = 귤
results[3] = 바나나
results[4] = 딸기
results[5] = 수박

 

IP 주소를 .(dot) 기준으로 나누는 예제입니다.

구분자를 지정하는 파라미터는 정규표현식이라서 .만 넣으면 원하시는대로 나오지 않습니다.

정규표현식의 예약어라서 .(dot) 앞에 역슬래시(\)를 2개 넣어야 인식됩니다.

String ipAddress = "110.20.0.255";
String[] ips = ipAddress.split("\\.");
for (int i = 0; i < ips.length; i++) {
	System.out.println("ips[" + i + "] = " + ips[i]);
}

// 출력
ips[0] = 110
ips[1] = 20
ips[2] = 0
ips[3] = 255

 

split 함수의 첫번째 파라미터가 정규표현식을 사용하고 있는데 다음에 기회가 되면 정규표현식을 사용하는 것을 알아보도록 하겠습니다.

 

관련글 :

2020/12/12 - [Java] - [Java] 문자열 자르기 - substring

 

[Java] 문자열 자르기 - substring

Java 기본으로 제공하는 String 클래스에 편리한 기능들이 많이 들어있습니다. 그 중 하나가 문자열을 자를 때 사용하는 substring입니다. (split, StringTokenizer, 정규표현식을 활용한 여러 가지 방법이

smartpro.tistory.com

 

2020/12/21 - [Java] - [Java] 문자열 자르기 - 여러 구분자/특수기호 사용하기

 

[Java] 문자열 자르기 - 여러 구분자/특수기호 사용하기

여러 구분자로 문자열 자르기 문자열을 분할할 때 구분자(delimiter)를 여러 개 사용하는 경우가 있습니다. split 함수와 StringTokenizer 클래스를 사용하여 가능합니다. 먼저 split 함수부터 알아보도록

smartpro.tistory.com

 

2020/12/30 - [Java] - [Java] 문자열 자르기 - char형 구분자

 

[Java] 문자열 자르기 - char형 구분자

다른 시스템과 인터페이스를 하다보면 데이터를 전송하기 위하여 데이터를 텍스트파일 또는 csv 파일에 저장하여 전송하는 경우가 있습니다. csv 파일의 구분자는 ,(쉼표)이므로 그리 어렵지 않

smartpro.tistory.com

 

반응형