안드로이드2013. 7. 20. 18:10

글을 올린 블로거를 생각해서 광고 한번만 클릭해주시면 감사하겠습니다

★ 문자열을 나누는 방법.


문자열을 나누는 방법에는 크게 아래와 같이 2가지가 있습니다.

[ StringTokenizer 이용 ]

예제>
  String str = "MouseVM,,StringTokenizer";
  StringTokenizer tokens = new StringTokenizer( str, "," );를 사용 할 경우
  
  for( int x = 1; tokens.hasMoreElements(); x++ )
  {
    System.out.println( "문자(열) " + x + " : " + tokens.nextToken() );
  }

결과>
  문자(열) 1 : MouseVM
  문자(열) 2 : StringTokenizer


[ Split 를 이용 ]

예제>
  String str = "MouseVM,,Slpit";
  String[] values = str.split(",");

  for( int x = 0; x < values.length; x++ )
  {
    System.out.println( "문자(열) " + (x+1) + " : " + values[x] );
  }

결과>
  문자(열) 1 : MouseVM
  문자(열) 2 : 
  문자(열) 3 : Slpit

이 두가지의 차이점은, StringTokenizer 는 값이 없는것은 무시 한다는 점입니다.
즉, 값이 없어도 처리를 하고 싶을경우 split를 이용하고, 그외의 경우는 StringTokenizer 를 사용하면 됩니다.

출처 : 
http://cafe.naver.com/pgzoo.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=14


※ 주의사항
문자열을 나누기 위해 Split 함수를 쓸때 주의할 사항이 있습니다.
저도 오늘 사용하면서 알게 되었는데요~

String의 멤버함수들 중 

replaceAll ( 정규식 , 대체문자열 )
split ( 정규식 )
matches ( 정규식 )

과 같이 정규식을 인수로 넣도록 하는 하는 것들이 있습니다.

정규식은 예약된 표기법을 이용 규칙적인 패턴을 갖는 문자열을 찾는다거나 혹은 변형하는 기능을 갖도록 합니다.

고로, 문자열이 만약 "MouseVM..Slpit" 로 정의되어 있다면
이렇게 str.split("."); 호출하여도 원하는 결과를 얻을 수 없다는 것을 의미합니다.

원하는 결과를 얻기 위해서는 
str.split("\\."); 
이렇게 사용하여야 합니다.

점(.)은 정규식에서 개행문자를 제외한 아무문자하나를 말합니다.
점을 점 그데로 인식 시키려면 예약어를 일반문자처럼 사용하기 위해 back slash를 앞쪽에 하나 넣어 주는데,  위에서 두 개를 넣은 것은  자바 문법에서  ""  내부에서 \ 가 예약어라 \\개를 넣어 줍니다.

출처 : http://kin.naver.com/db/detail.php?d1id=1&dir_id=10106&eid=u+9cW21TVvIUIAhHBMe3iW90aKtjWOc/&qb=c3BsaXQoIi4iKQ==



출처 : http://mousevm.tistory.com/83

Posted by 퍼플카우D