Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

메모장

문자열 파싱(parsing) 방법. 본문

Java

문자열 파싱(parsing) 방법.

우유한잔하죠 2016. 1. 6. 15:28

이번에 소개할 문자열 파싱 방법은 두 가지가 있다.

다른 방법이 더 있는지는 모르지만 기본적으로 쓰이는 이 두가지만 알아도 문자열 자르는데는 무리가 없을것으로 보인다.

1. Tokenizer

이론적으로 자세한 설명을 할 실력이 안되므로  예제를 통해 보면 되겠다.

배열에 넣어도 되겠지만 arrayList를 사용해 보았음.(그냥 해봤음.)

1) Tokenizer 클래스로 인스턴스를 생성.

StringTokenizer st1 = new StringTokenizer(str, token);

str에는 문자열, token엔 토큰분리자를 넣으면 된다.(큰따옴표를 붙이는건 기본. 사진상으론 변수명이라 큰따옴표를 하지 않음.)

 

2) arrayList 클래스로 인스턴스를 생성.(문자열로 타입을 지정했음.)

ArrayList<String> pstr = new ArrayList<String>();

 

3) while문으로 토큰이 남아있는지 체크 후, 있다면 arrayList에 저장.

While(st1.hasMoreTokens()){
    pstr.add(st1.nextToken());
}

 

실제 사용 예시

str =  "./asd/!/.asdas/./asd/.";
token = ".";
결과 : /asd/!/    asdas/    /asd/    "."을 기준으로 세개의 문자열로 분리가 됨.

* 생성자에 문자열, 토큰분리자 외에 true라는 불린형 인자를 넣게 되면 토큰 분리자도 토큰으로 포함되게 된다.

2. split

따로 인스턴스를 만들 필요 없이 문자열 뒤에 함수를 사용하면 된다.

이번엔 배열을 사용해 보았음.

1) 배열 선언 후 값을 넣음.

String[] result = str.split(ch);

str은 문자열, ch는 표시부분이다.(큰따옴표를 붙이는건 기본. 사진상으론 변수명이라 큰따옴표를 하지 않음.)

여기서 중요한건 스플릿에서는 "."이라고 넣게 되면 에러가 남.

구글링 결과 이유는 이렇다고 한다.

java.lang.String.split splits on regular expressions, and . in a regular expression means "any character".

Try temp.split("\\.").                //출처 : stack overflow

위의 글 처럼 \\.으로 넣어주면 정상적으로 돌아감.

 

자신이 선호하는 방법을 쓰면 될 듯하다.

 

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

추가내용

둘의 차이점

split같은 경우는 데이터가 없는 경우도 구분 문자를 기준으로 반환을 해준다.

ex) asdf-dsfsf--

-> -로 분리할 경우 split은 asdf와 dsfsf 외에도 - 로 둘러쌓인 공백도 반환을 시킨다.

 

tokenizer가 split보다 실행속도가 빠르다.(알아서 상황에 맞게 적절히 쓰면될듯.)

 

 

'Java' 카테고리의 다른 글

현재 날짜와 시간 표기 방법  (1) 2016.03.02
Comments