|
|
|
|
|
다음과 같은 특정 규칙으로 정의된 문자열이 있다고 가정하자.
"홍길동,28,남자,서울 강남구"
해당 문자열을 구분자로 구분하여 나누는 방법으로는 몇가지가 있는데 오늘은 StringTokenizer 와 split을 이용해 보겠다
StringTokenizer는 특정 구분자를 기준으로 token 단위로 끊어서 읽을수 있게 해준다.
split의 경우 구분자를 기준으로 문자열을 분리하여 배열로 리턴한다.
import java.util.StringTokenizer; public class StringTokenTest { public static void main(String[] args) { // 이름,나이,성별,지역 String txt = "홍길동,28,남자,서울 강남구" ; // StringTokenizer를 이용한 문자열 분리 StringTokenizer tokens = new StringTokenizer(txt); String sName = tokens.nextToken(",") ; // 이름 String sAge = tokens.nextToken(",") ; // 나이 String sSex = tokens.nextToken(",") ; // 성별 String sLoc = tokens.nextToken(",") ; // 지역 System.out.println("[StringTokenizer 이용]") ; System.out.println(sName) ; System.out.println(sAge) ; System.out.println(sSex) ; System.out.println(sLoc) ; System.out.println("") ; // split을 이용한 문자열 분리 String[] txtArr = txt.split(",") ; System.out.println("[split 이용]") ; for(int i=0; i < txtArr.length; i++){ System.out.println(txtArr[i]) ; } } }
사용방법은 둘다 간단하지만 특히 split을 이용한 방법이 코드도 짧고 꽤 간단하다.
하지만 상황에 맞게 StringTokenizer 과 split을 구분하여 사용하는게 좋다.
StringTokenizer는 "남자,,서울 강남구" 처럼 null값이 있을경우 null을 무시해 버린다.
즉 실제 출력은 "남자, 서울 강남구"가 되버린다. 이 경우는 구분자 앞뒤로 공백을 주어 토큰을 trim 처리해서 공백을 지워버리면 되지만, split은 null 이 있을경우에도 무시하지 않으므로 차라리 해당 문자열이 적을경우 split을 이용하는게 편하다.
또다른 상황으로 나 같은 경우 StringTokenizer을 사용하는곳은 CSV형식의 파일을 읽어서 뭔가를 처리해야 할때 인데, 이때 CSV 파일의 용량이 상당히 크다.
해당 작업을 split으로 처리하면 처리속도가 굉장히 떨어져 비효율적인 문제가 발생하였다.
'Programming > Java' 카테고리의 다른 글
excel 업로드 java에서 읽기, 엑셀 파일 db로 등록 (0) | 2015.12.21 |
---|---|
문자열 포함여부 확인(검색)방법 - contains, indexOf, matches (0) | 2015.12.16 |
텍스트 파일 생성 (FileWriter, BufferedWriter) (0) | 2015.12.15 |
URL 읽어오기 (0) | 2015.12.14 |
디렉토리내 일정기간 지난 파일 삭제 (0) | 2015.12.14 |
|
|
|
|
|