loading

프로그래밍/JAVA

[JAVA] 문자열을 배열로 자르는 메서드 split에 대해서 알아봅시다

침착곰 2021. 5. 17. 20:38
반응형

안녕하세요

프로그래밍을 하다보면 문자열을 특정 기준에 따라 잘라서 보고 싶은 경우가 있습니다

그 경우 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에 대해서 알아봤습니다

자바 공부를 하는 분들에게 제 포스팅이 도움이 되었으면 좋겠습니다!

반응형
그리드형