반응형

String.split()를 이용한 데이터 분할하기

 


CSV파일을 아시나요?
Excel에서 작성한 문서를 CSV형식으로 저장할 수 있습니다.
ASCII형식의 파일로 저장되며, Delimeter(,)를 이용하여 '열'을 구분합니다.
( ※ Cell내에 개행문자가 있을 경우, 쌍따음표( "~" )로 내용을 표시합니다. )

String.split()는 
이런 CSV형식의 파일이나, Delimeter(구분자)로 구분된 Data를 읽어 처리할 때 많이 사용합니다.
Delimeter를 이용하여 Data를 분할하는 기능입니다.
엑셀파일의 "데이터 - 텍스트 나누기"와 동일한 기능이라고 보시면 됩니다.

파일을 읽어 String.split()을 이용하여 Data분할을 해보겠습니다.

* 샘플 DATA
  

Sample Data


* SOURCE

    public static void main(String[] args) { 
         
        ArrayList arrReadFile = TxtFile.readArr( "C:\\workspace\\Test\\B.dat" ); 
         
        // 파일의 DATA 출력 
        for( int i = 0; i < arrReadFile.size(); i++ ) System.out.println( arrReadFile.get( i ) ); 
         
        // String.split()를 이용한 DATA분할 
        for( int i = 0; i < arrReadFile.size(); i++ ) { 
             
            String[] saRow = arrReadFile.get( i ).split( "," );  // Delimeter( , )로 DATA 분할  
             
            // 분할된 데이터 출력 
            for( int k = 0; k < saRow.length; k++ )  
                System.out.println( "[" + ( i + 1) + "행][" + ( k + 1 ) + "열] " + saRow[k].trim() );  // Trim()으로 공백 제거 
        } 
    } 


* RESULT

  - 파일의 DATA 출력 

    이름, 국어, 영어, 수학 
    홍길동, 10, 20, 30 
    이순신, 40, 50, 60 

  - 분할된 데이터 출력 

    [1행][1열] 이름 
    [1행][2열] 국어 
    [1행][3열] 영어 
    [1행][4열] 수학 
    [2행][1열] 홍길동 
    [2행][2열] 10 
    [2행][3열] 20 
    [2행][4열] 30 
    [3행][1열] 이순신 
    [3행][2열] 40 
    [3행][3열] 50 
    [3행][4열] 60

 

* 설명

 

ArrayList arrReadFile = TxtFile.readArr( "C:\\workspace\\Test\\B.dat" ); 


    [파일읽기] 소스를 이용하여, 읽은 파일을 ArrayList로 반환하는 클래스입니다. 
    소스는 위의 링크를 참고하세요. 


※ 참고

 

    - 링크 ☞ 파일 핸들링 : 파일 읽기


    - String.trim() : 문자열의 '앞/뒤'에 있는 '공백'을 제거한다.
    - ArrayList.size() : Array에 들어 있는 Data의 수

끝.

반응형