java split 공백

javascript 2012. 1. 3. 17:17 Posted by jiddong

스플릿 사용시 공백데이터를 주의해야한다. 

공백데이터를 스플릿으로 나눌시 데이터 갯수가 맞지 않음

제일 마지막에 오는 요소의 값이 없을 경우 그 요소를 무시하도록 되어 있음



StringTokenize


구분자 사이에 분해할 요소의 값이 존재하지 않으면 무시
완전하게 모든 요소의 값이 존재하는 경우라면 사용을 해도 되겠지만
가변적인 데이터라면 사용하기 꺼림직함

 

String.split(string text, int limite)

limit를 저정 하지 않았을 경우에는
제일 마지막에 오는 요소의 값이 없을 경우 그 요소를 무시하도록 되어 있음
  
limit를 지정 했을 경우 해당 숫자만큼만 분해.

limit는 분해를 한 후 얻고자 하는 String[]의 크기라고 보시면 됩니다.

limit가 분해하고자 하는 요소의 개수와 같거나 클 경우 배열의 개수만큼의 String[]을 되돌려 주지만, 요소의 개수보다 작을 경우 지정한 숫자만큼의 String[]으로 되돌려 줌

아래관련
소스들을 보시면 이해가능


관련 소스





  1.         public static void main(String[] args) {
  2.                 String recode = "a-b-c-d-e-f";
  3.                 String[] values = recode.split("-");
  4.                    System.out.print("length ::"+values.length + "\n");
  5.                                  
  6.                   for(int i=0 ; i<values.length ; i++) {
  7.                    System.out.print("values["+i+"]::["+values[i]+"]\n");
  8.                   }
  9.  
  10.         }
  11.        
  12.         //출력값
    스플릿된 갯수 만큼 length 가 나오고 있음
  13. length ::6
    values[0]::[a]
    values[1]::[b]
    values[2]::[c]
    values[3]::[d]
    values[4]::[e]
    values[5]::[f]

  14.  
  15. }

  1.         public static void main(String[] args) {
  2.                 String recode = "a-b-c-d-e-f--------"; 데이터가 없다면!!!!????
  3.                 String[] values = recode.split("-"); 리미트값 없음
  4.                    System.out.print("length ::"+values.length + "\n");
  5.                                  
  6.                   for(int i=0 ; i<values.length ; i++) {
  7.                    System.out.print("values["+i+"]::["+values[i]+"]\n");
  8.                   }
  9.  
  10.         }
  11.         
    split()함수에 Limite 값이 없기 때문에 값이 없는 데이터는 무시됨
    스플릿된 갯수 만큼 length 가 나오고 있음

    length ::6

  12. values[0]::[a]
    values[1]::[b]
    values[2]::[c]
    values[3]::[d]
    values[4]::[e]
    values[5]::[f]

  13.  
  14. }
 
  1.         public static void main(String[] args) {
  2.                 String recode = "a-b-c-d-e-f--------";
  3.                 String[] values = recode.split("-", 20); 리미트 값이 생겨땅!!!
  4.                    System.out.print("length ::"+values.length + "\n");
  5.                                  
  6.                   for(int i=0 ; i<values.length ; i++) {
  7.                    System.out.print("values["+i+"]::["+values[i]+"]\n");
  8.                   }
  9.  
  10.         }
  11.         
    split()함수에 limite 값이  있 기  때문에 값이 없는 데이터와 토큰뒤도 또한 스플릿데된 데이터로 나옴
    스플릿된 갯수 만큼 length 가 나오고 있음

    length ::14

  12. length ::14
    values[0]::[a]
    values[1]::[b]
    values[2]::[c]
    values[3]::[d]
    values[4]::[e]
    values[5]::[f]
    values[6]::[] //공백도 데이터로 본다 리미트가 있다면
    values[7]::[]
    values[8]::[]
    values[9]::[]
    values[10]::[]
    values[11]::[]
    values[12]::[]
    values[13]::[]


  13.  
  14. }
  

  1.         public static void main(String[] args) {
  2.                 String recode = "a-b-c-d-e-f- - - - - - - -"; 공백을 넣었당
  3.                 String[] values = recode.split("-");
  4.                    System.out.print("length ::"+values.length + "\n");
  5.                                  
  6.                   for(int i=0 ; i<values.length ; i++) {
  7.                    System.out.print("values["+i+"]::["+values[i]+"]\n");
  8.                   }
  9.  
  10.         }
  11.        

    split()함수에 Limite 값이 없기 때문에 마지막 토큰뒤에 값이 없는 데이터는 무시됨
  12. 스플릿된 갯수 만큼 length 가 나오고 있음

    length ::13 
    13 이 나오는 이유는 마지막 토큰 뒤에 데이터가 없기 때문에 스플릿이 제외됨
  13. values[0]::[a]
    values[1]::[b]
    values[2]::[c]
    values[3]::[d]
    values[4]::[e]
    values[5]::[f]
    values[6]::[ ]
    values[7]::[ ]
    values[8]::[ ]
    values[9]::[ ]
    values[10]::[ ]
    values[11]::[ ]
    values[12]::[ ]

  14.  
  15.  
  16. }


  1.         /**
  2.          * @param args
  3.          */
  4.         public static void main(String[] args) {
  5.                 String recode = "a-b-c-d-e-f- - - - - - - -";
  6.                 String[] values = recode.split("-"20);
  7.                    System.out.print("length ::"+values.length + "\n");
  8.                                  
  9.                   for(int i=0 ; i<values.length ; i++) {
  10.                    System.out.print("values["+i+"]::["+values[i]+"]\n");
  11.                   }
  12.  
  13.         }
  14.       
    split()함수에 Limite 값이 있기 때문에 마지막토큰 뒤에도 데이터가 있는것으로 간주함
  15. length : 14

  16.   
  17. length ::14
    values[0]::[a]
    values[1]::[b]
    values[2]::[c]
    values[3]::[d]
    values[4]::[e]
    values[5]::[f]
    values[6]::[ ]
    values[7]::[ ]
    values[8]::[ ]
    values[9]::[ ]
    values[10]::[ ]
    values[11]::[ ]
    values[12]::[ ]
    values[13]::[]

  18.  
  19.  
  20. }