프로그래밍 언어/Java

[Java] 문자열 자르기 - split

smart Pro 2020. 12. 16. 23:19

 

지난 시간에는 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

 

반응형