ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MessageFormat & split 생각해보기
    개발하면서/etc 2010. 10. 14. 00:47
    반응형

    요새 자바로 개발을 하고있는데 제목과 같이 두개를 사용할 기회가 있었다.

    시시하지만 그저 남기고 싶어서 이렇게 글을 쓴다.

    Split

    public class Test {	
    	public static void main(String[] args) {	
    		String input = "kang#@sdasfd#@asasf#@#@asdfs#@#@";
    		String name[];
    		name = input.split("#@");
    		for (String buf: name){			
    			System.out.println("split:" + buf);
    		}	
    	}
    }
    

    실행하면 결과가 name이 6개 할당될줄알았는데 아니었다.



    마지막은 처리하지 않는다~

    굳이 마지막은 안한다는 연산을 왜 했는지 궁금하다....(이부분 아시는 분있으시면 알려주세요~~)


    MessageFormat
    팀에서 사용하기위해 기존에 DB데이타 가져오는 모듈을 조금 개선하는 작업을 하고있다.

    아래와 같은 기능을 하고있다.

    java -jar DBManager2010.jar oracleDB.conf "insert into DBTEST values('<#id>;', '<#name>;', '<#grade>;')" -uf input.txt

    input.txt의 내용



    이렇게 하면
    실행되는 쿼리문은  아래와 같다.
    insert into DBTEST values('1', '날리지큐브', '00111')
    insert into DBTEST values('2', '검색연구소', '1733')
    ......
    .......
    insert into DBTEST values('5', '이주호', '3531')
    <#~~~>; 이부분을 %s로 치환을 한후 String배열에 실제 데이타를 순서에 맞게 저장하는걸로 만들기로했다.

    만들고 보니.....음.......만약에 사용자가 <#~~>;사용을 30개정도 한다고 하면?

    String.format(sql, value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], value[8]....value[29]);

    . . . 무식해 보인다.



    MessageFormat 이 생각이 나서아래와 같이 작성했다.

    public static void main(String[] args) {	
    	String value[] = new String[5];		//input.txt을 읽어서 순서에맞게 저장되어있다고 가정
    	value[0] = "1";	value[1] = "날리지큐브";
    	value[2] = "00111";
    	String sql = "insert into DBTEST values('%s', '%s', '%s')";
    	sql = String.format(sql, value[0], value[1], value[2], value[3], value[4]);
    	System.out.println("Processing sql :" + sql);	
    }

    오~~~ 좋다 ㅋㅋㅋㅋ
    %s를 바꾸는것을 필드 위치번호로 변경만 해주면된다.
    '로 하면 문자로 인식하기때문에 '' (' 두개)로 해야한다는것에 주의~!!ㅋㅋ

    다시 한번 느끼지만 삶에 도움이 되지 않는 배움은 없다. 그리고 배움은 실제 경험해볼때 빛을 발하는것같다.

    반응형

    댓글

Designed by Tistory.