JAVA

문자열분리(Splitter, Delimiter)

웹개발자준비 2018. 8. 9. 13:48

1. String.split() 객체 메소드

- 정규 표현식 사용


2. StringTokenizer클래스

- 문자 사용


StringTokenizer 사용예제

-------------------------------------------------------------------------------------------------------

예제1) split() vs StringTokenizer


//String 배열에 비교할 값

String[] txt = new String[4];

txt[0] = "홍길동,20,서울시,남자";

txt[1] = "아무개,25,부산시,남자";

txt[2] = "호호호,23,,여자";

txt[3] = "하하하,,인천시,남자";


for(String line : txt){

String[] temp = line.split(",");


for(String item : temp){

System.out.print(item + "\t");

}

System.out.println();

}

--------------------------------------------

for(String line : txt){

StringTokenizer st = new StringTokenizer(line,",");


while(st.hasMoreTokens()){

System.out.print(st.nextToken() + "\t");
}

System.out.println

}




//1.split()

- 구분자와 구분자 사이에 아무 데이터가 없어도 하나의 요소로 인정(배열의 방을 만들어준다.)


//2.StringTokenizer

- 구분자와 구분자 사이에 아무 데이터가 없으면 요소로 인정안함

- 토큰(token) : 공백이 없는 연속된 문자의 집합 -> 단어


-------------------------------------------------------------------------------------------------------

//split()

- 장점 : 정규 표현식 사용 가능(다양하게 쪼갤 수 있따.)

- 단점 : 속도가 느리다. (정규표현식 떄문에)


//StringTokenizer

- 장점 : 속도가 빠르다.

- 단점 : 정규 표현식 사용 불가능(단순한 문자로만 쪼갤 수 있따. =>원패턴)



주의점

- 자바의 split()은 구분자에 "|"가 오면 구분자로 인식하지 않고 연산자, OR  인식한다

String[] temp = txt.split("\\|"); (O)

String[] temp = txt.split("[|]");    (O)

String[] temp = txt.split("|");  (X)


-split()은 앞의 빈 구분자, 중간의 빈 구분자는 인식 O + 끝의 빈 구분자 인식 x

ex) txt = ",홍길동,,,아무개,하하하,호호호,";


-정규식 사용

ex)txt ="홍길동,아무개---호호호^하하하";

temp = txt.split("[,-^]{1,3}");


//수학(참고)