자바(Java) 문자열 구분을 위한 Split 함수 사용하는 방법

자바(JAVA)

자바(Java) 문자열 구분을 위한 Split 함수 사용하는 방법

 

환경: Eclipse Mars

 

문자열을 구분할 때 특정 구분자(Delimter) 를 기준으로 나눠서 배열에 담아 이용을 합니다. 이 때 주로 사용하는 함수가 java.lang.String.split() 입니다. split() 함수의 인수로  구분자가 넘어가며 데이터가 없어도 배열에 담아 둡니다. 그리고 함수는 2종류가 있습니다. 하나씩 예를 들어 설명하도록 하겠습니다.

 

Split 함수의 문법은 아래와 같습니다. 2종류가 있죠. 첫 번째는 가장 일반적으로 사용하는 문법으로 인수가 하나 입니다. 문자열을 구분할 때 사용하는 정규 표현식이 들어갑니다. 식이 들어갈 수도 있고 “,” 같은 구분 문자가 들어갈 수 있습니다. 두 번째는 인수가 하나 더 들어가는데 구분하는 개수를 넘기게 됩니다. 둘 다 리턴값은 String 배열입니다.

 

public String split(String regex)

public String split(String regex, int limit)

 

l  regex : 문자열을 구분하기 위한 정규 표현입니다.

l  limit : 분류할 문자열의 수입니다. 분류할 수 있는 단어가 10개인데 limit 5 이면 5개만 구분하고 나머지는 통채로 출력합니다.

 

아래 그림처럼 String 객체에 “.” 를 찍으면 두 종류의 함수를 볼 수 있습니다.

자바(Java) 문자열 구분을 위한 Split 함수 사용하는 방법

 

첫 번째 함수에 대한 샘플입니다. 문자열에 있는 단어 사이에 공백으로 구분을 하기 위해 Split 함수의 인수로 공백을 나타내는 정규 표현식을 넣었습니다. 그럼 단어들을 전부 배열로 만들어서 반환해 줍니다. 실행한 결과 콘솔에 찍힌 내용을 보시면 아시겠죠. 

public class Split {

	public static void main(String[] args) {
		String str1 = "일과 놀이 사이에는 경계가 없다.";
		String[] words = str1.split("\\s");
		
		for (String wo : words ){
			System.out.println(wo);
		}
	}
}
// 결과
일과
놀이
사이에는
경계가
없다.

 

두 번째 예제는 하나씩 잘라서 담는 것입니다. 원하는 배열 요소에 for 문을 돌려 꺼낼 필요 없이 바로 접근해서 가져올 수 있습니다. 그리고 잘랐는데 아무것도 없다면 빈 공백을 반환합니다

public class Split {

	public static void main(String[] args) {
		String str1 = "phone;;name;id;pwd";
		String word1 = str1.split(";")[0];
		String word2 = str1.split(";")[1];
		String word3 = str1.split(";")[2];
		
		System.out.println("첫번째 단어:" + word1);
		System.out.println("두번째 단어:" + word2);
		System.out.println("세번째 단어:" + word3);
	}
}
// 결과
첫번째 단어:phone
두번째 단어:
세번째 단어:name

 

세 번째는 구분하는 개수를 제한하는 함수를 사용한 것입니다. 구분할 수 있는 개수가 4개인데 두 번째 인수인 limit 2를 입력하면 총 배열의 크기는 3이 되겠죠. 2개까지는 구분이 되고 나머지는 그대로 출력이 되기 때문이죠

public class Split {

	public static void main(String[] args) {
				
		String str1 = "phone;name;id;pwd";
		String[] words1 = str1.split(";", 0);
		String[] words2 = str1.split(";", 2);
		
		System.out.println("0 일때 : ");
		for (String wo : words1 ){
			System.out.println(wo);
		}
		
		System.out.println("\r\n2 일때 : ");
		for (String wo : words2 ){
			System.out.println(wo);
		}
	}
}
// 결과 
0 일때 : 
phone
name
id
pwd

2 일때 : 
phone
name
id;pwd
저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군