즉,
결과와 같이 split()을 이용한 경우에는 비록 값이 존재하지 않더라고 해당 데이터가 없다는 것을 확실하게 판단을 할 수 있습니다.
구분자를 기준으로 데이터가 없는 부분도 그 결과를 반환해주지요.
그렇지만 StringTokenizer는 구분자로 문자열간 구분이 되어 있더라도 구분자와 구분자 사이에 데이터가 존재하지 않으면 해당 데이터는 무시를 하고 실제 값이 존재하는 부분만 값을 반환합니다.
4) 만약 맨뒤에 값이 없을 경우 결과가 어떻게 나올까요??
String str = "학교,집,회사,";
String[] values = str.split(",");
for( int x = 0; x < values.length; x++ ){
System.out.println( "문자" + (x+1) + " = " + values[x] );
}
결과-------------------
문자1 = 학교
문자2 = 집
문자3 = 회사
-----------------------
이렇게 나옵니다. StringTokenizer 를 사용해도 마찬가지의 결과가 나타납니다.
그래서 DB에 저장을 한다고 해도
mem1 필드에는 학교
mem2 필드에는 집
mem3 필드에는 회사
이렇게 저장이 되므로 쓸모없게 되버리지요..그렇다면 해결방법은 과연 없을까요??
해결방법은 당연히 split 에 있습니다.
한번쯤 API를 자세히 살펴보면 split() 메소드는 2가지의 방식이 있습니다.
하나는 하나는 split( String regex )이고
다는 하나는 split( String regex, int limit )입니다.
즉 split( String regex, int limit ) 를 이용하여 마찬가지로 쪼갤 수가 있는데 int limit 에
String.split( String regex, int limit )를 사용해서 쪼개보겠습니다.
5) split(",", 4) 를 이용하여 쪼개보기
String str = "학교,집,회사,";
String[] values = str.split(",");
for( int x = 0; x < values.length; x++ ){
System.out.println( "문자" + (x+1) + " = " + values[x] );
}
결과-------------------
문자1 = 학교
문자2 = 집
문자3 = 회사
문자4 =
-----------------------
split("," , 4) 이렇게 한다면 4개의 공간을 지정을 해준다는 뜻입니다.
즉 학교,집,회사, 를 쪼갤경우
mem1 = 학교
mem2 = 집
mem3 = 회사
mem4 = null
로 저장을 할 수 있습니다.
하지만 이건 어디까지나 고정적으로 구분이 될 경우 입니다. 가변적으로 몇개의 데이터가 들어올지 모르는 상황에서는
결국 필요없게 되는 문제가 아직도 발생을 하게 되지요.
가변적일때는 결국 방법이 없으므로 언제나 상황을 종합하여 값을 받아와 구분을 해야겠습니다.
마지막으로 slpit("," , 2) 로 할 경우 어떻게 될까요?
mem1 = 학교
mem2 = 집
이렇게 2개까지만 저장을 할 수 있습니다.