초보 개발자의 스터디룸

[Java] Split() 함수

justdoIT0730 2022. 11. 28. 12:59
728x90
728x90

String type을 다룰 때 사용할 수 있는 여러 함수 중 특정 조건을 이용해 배열로 저장시켜주는 역할을 하는 Split에 대해 알아보자.

 

  • 1. split(String regex);
String test ="213141516171819";
String [] arr = test.split("1");

String regex을 기준으로 문자열을 나누어 배열에 저장한다.

 

String type의 test에 "213141516171819"라고 선언되어 있다.

이를 배열 arr에 1(String regex)을 기준으로 나누어 각각 배열에 저장하는 기능을 수행한다.

✓ arr 결과값

[2, 3, 4, 5, 6, 7, 8, 9]

 

  • 2. split(String regex, int limit)
String test ="a b c d e f g ";
String [] b = test.split(" ",3);
String [] c = test.split(" ",test.length());
String [] c2 = test.split(" ");
String [] d =test.split(" ", -1);

String regex을 기준으로 문자열을 나누어 int limit의 수만큼 배열에 저장한다.

 

String type의 test에 "a b c d e f g "라고 선언되어 있다.

배열 b, c, c2, d 각각

 

1. b는 한 문자 씩("") 배열의 길이(int limit)가 3이 되도록 선언 : int limit 양수

2. c는 한 문자씩 배열의 길이가 test의 길이가 되도록 선언 

3. c2는 한 문자씩 int limit이 0 되도록 선언 : int limit 0

3. d는 한 문자씩 int limit이 - 1 되도록 선언 : int limit 음수

 

1.1 int limit가 양수인 경우 그 수만큼 배열의 크기를 만들어 저장한다. 조건에 맞게 배열에 배치가 되고, 배열의 마지막에는 남은 요소들이 들어가게 된다.

✓ b 결괏값

[a, b, cdefg]

 

2.1  String값의 크기만큼 배열의 길이를 생성한다. 

✓ c 결괏값

[a, b, c, d, e, f, g, ]

 

 3.1 String test의 마지막 문자가 공백일 때 공백을 지우고 배열을 만든다.

✓ c2 결괏값

[a, b, c, d, e, f, g]

 

4.1 int limit이 음수일 경우 마지막 요소가 빈 문자일 때 그 공백까지 포함하여 배열을 만든다.

✓ d 결괏값

[a, b, c, d, e, f, g, ]

 

728x90

 

이때 2.1의 결과와 4.1의 결과가 같게 된다. test 문자열 간격이 공백이고 마지막이 공백이 있다.

이를 regex 공백으로 구분하기 때문에 

마지막 공백도 구분되어 저장되어 c의 결과 마지막에 빈 요소로 배열에 저장된 것이었다.

 

String test ="a b c d e f g ";
String [] c = test.split("",test.length());
String [] d =test.split("", -1);

만약 위처럼 공백이 아닌 한 글자 단위("")로 나누게 된다면 

 

✓ c 결괏값

[a,  , b,  , c,  , d,  , e,  , f,  , g,  ]

 

✓ d 결괏값

[a,  , b,  , c,  , d,  , e,  , f,  , g,  , ]

 

이렇게 저장된다.

limit이 음수일 경우 한 글자 단위로 나눌 때 조건에 맞을 때까지 최대한 구분하여 저장하는 반면 

limit이 양수일 경우 조건보다 -1회 적용하여 저장하게 된다. 

 

 

 

[출처]

https://offbyone.tistory.com/398

 

자바 문자열을 구분자로 분할하기 - split

자바 언어에서 구분자로 연결된 문자열을 분할하는 방법을 알아봅니다. 예전에는 StringTokenizer 객체를 사용했었는데, JDK 1.4부터 split 메소드를 사용할 수 있습니다. 이게 훨씬 간편합니다. split는

offbyone.tistory.com

 

728x90
728x90