'프로그래밍 > JAVA' 카테고리의 다른 글
JTextArea에 글 넣기 (0) | 2012.09.07 |
---|---|
Window Builder (0) | 2012.08.30 |
프레임 종료 코드 (0) | 2012.08.30 |
파일 읽기 (0) | 2012.08.30 |
String.split()과 StringTokenizer의 차이 (0) | 2012.08.30 |
JTextArea에 글 넣기 (0) | 2012.09.07 |
---|---|
Window Builder (0) | 2012.08.30 |
프레임 종료 코드 (0) | 2012.08.30 |
파일 읽기 (0) | 2012.08.30 |
String.split()과 StringTokenizer의 차이 (0) | 2012.08.30 |
출처: http://blog.daum.net/badog/4458004
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
혹은
setDefaultCloseOperation(EXIT_ON_CLOSE);
Window Builder (0) | 2012.08.30 |
---|---|
JFileChooser, window 열기 창, 저장 창, 파일 선택 창 (0) | 2012.08.30 |
파일 읽기 (0) | 2012.08.30 |
String.split()과 StringTokenizer의 차이 (0) | 2012.08.30 |
파일 쓰기 (0) | 2012.08.30 |
출처: http://sugame.tistory.com/111
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line = null;
while((line = reader.readLine()) != null) {
...
}
JFileChooser, window 열기 창, 저장 창, 파일 선택 창 (0) | 2012.08.30 |
---|---|
프레임 종료 코드 (0) | 2012.08.30 |
String.split()과 StringTokenizer의 차이 (0) | 2012.08.30 |
파일 쓰기 (0) | 2012.08.30 |
이클립스 설치 및 PATH 설정 (0) | 2012.08.28 |
출처: http://www.okjsp.pe.kr/seq/32363
문자열을 구분자로 구분하여 잘라내는 4가지 방법들: http://sexy.pe.kr/tc/509
StringTokenizer 와 String.split() [Tweet] |
가끔씩 StringTokenzer를 사용해서 문자열을 분해 할 때 특정 요소의 값이 없을 경우 처리하는 것에 대한 질문을 받아서 문자열을 특정 구분자를 기준으로 분해 하는 것에 대해 정리를 해봤습니다. jdk1.4.x를 기준으로 정리한 것입니다. 잘 못 된 부분이 있으면 지적 해주십시요. --------------------------------------------------------------------------------------------- 특정 구분자(경계기호:Delimter)를 기준으로 문자열을 분해 할 때 흔히 사용하는 방법이 java.util.StringTokenizer를 이용해서 분해를 하거나 jdk1.4대에 새로 추가 된 java.lang.String.split(String regex)을 사용하는 방법입니다.
이들 둘은 "문자열에서 특정 구분자를 기준으로 문자열을 분해 한다"는 기본 기능은 같지만 그 결과는 "분해 할 문자열이 어떻게 구성이 되어 있느냐"에 따라서 서로 다른 결과값을 도출합니다.
예를 살펴보기 위해서 다음과 같은 가정을 하겠습니다.
1. 먼저 각 항목이 모두 존재 하는 경우를 살펴 보겠습니다. 이 경우라면 다음과 같은 형태가 될 것입니다.
이 경우는 다음과 같이 분해를 할 수 있을 것입니다. String str = "neoburi,inkuk,neoburi@neoburi.com,019-366-5815"; String[] values = str.split(","); 또는, StringTokenizer values = new StringTokenizer( str, "," ); 이 때에는 String.split(String regex)이나 StringTokenizer의 결과 값은 같게 나옵니다.
그런데 문제는 이렇게 모든 항목이 존재하지 않는 경우가 있을 때입니다.
2. 일부 항목만으로 문자열이 구성 된 경우를 살펴 보겠습니다.
예를 든다면 다음과 같은 값을 가질 때겠지요.
1) "아이디,이름,,전화번호" 일 경우를 살펴 보겠습니다.
문자열은 다음과 같이 구성이 될 것입니다.
String str = "neoburi,inkuk,,019-366-5815";
for( int x = 1; tokens.hasMoreElements(); x++ ){ System.out.println( "문자(열) " + x + " : " + tokens.nextToken() ); }
결과 : 문자(열) 1 : neoburi 문자(열) 2 : inkuk 문자(열) 3 : 019-366-5815
결과와 같이 split(String regex)을 이용한 경우에는 비록 값이 존재하지 않더라고 해당 데이터가 없다는 것을 확실하게 판단을 할 수 있습니다. 즉 구분자를 기준으로 데이터가 없는 부분도 그 결과를 반환해준다는 얘기지요.
그렇지만 StringTokenizer는 비록 구분자로 문자열간 구분이 되어 있더라도 구분자와 구분자 사이에 데이터가 존재하지 않으면 (",,"의 경우) 해당 데이터는 무시를 하고 실제 값이 존재하는 부분만 값을 반환합니다.
두 결과 사이에는 많은 차이가 남을 볼 수 있습니다. 2) "아이디,이름,전자우편," 일 경우
이 역시 문자열은 다음과 같이 구성이 될 것입니다.
String str = "neoburi,inkuk,neoburi@neoburi.com,";
for( int x = 1; tokens.hasMoreElements(); x++ ){ System.out.println( "문자(열) " + x + " : " + tokens.nextToken() ); } 결과 : 문자(열) 1 : neoburi 문자(열) 2 : inkuk 문자(열) 3 : neoburi@neoburi.com
위에서 보는 바와 같이 분해하고자 하는 문자열의 마지막 요소가 존재하지 않을 경우 String.split(String regex)과 StringTokenizer는 같은 결과를 보여줍니다.
두 결과사이에는 차이가 없음에도 불구하고 잃어 버리는 데이터가 생겼습니다. 개발자는 분명히 사용자의 정보로부터 4개의 항목을 얻어 표현을 하고 싶지만 그렇게 할 수가 없습니다. 물론 어거지로 한다면 가능은 하겠지만요.^^
그러면 String.split(String regex)과 StringTokenizer를 사용 하더라고 분해하고자 하는 마지막 항목이 없을 경우는 분해 할 방법이 없을까요? 그렇지 않습니다.
API를 어느정도 보신 분들이라면 아마 "그것은 이렇게 하면 되지!"라고 속으로 생각 하실 겁니다.
java.lang.String클래스에는 split()메소드가 2개가 있습니다. String.split( String regex, int limit )를 사용해서 분해를 해보겠습니다.
비록 마지막 분해 요소의 값이 존재하지 않더라고 split( String regex, int limit )를 이용하면 고스란히 원하는 형태의 데이터를 얻는 것을 볼 수 있습니다. StringTokenizer의 경우는 구분자 사이에 분해할 요소의 값이 존재하지 않으면 무시하게 되어 있습니다. 완전하게 모든 요소의 값이 존재하는 경우라면 사용을 해도 되겠지만 예에서 본 바와 같이 가변적인 데이터라면 사용하기 불편한(?) 것이 사실입니다.
String.split()의 경우 limit를 저정 하지 않았을 경우에는 제일 마지막에 오는 요소의 값이 없을 경우 그 요소를 무시하도록 되어 있습니다. 이 역시 데이터가 정형화 되어 있는 경우라면 사용해도 무리 없겠지만 가변요소가 존재 한다면 StringTokenizer와 크게 다를 게 없습니다.
대신 limit를 지정 했을 경우 해당 숫자만큼만 분해를 합니다. limit는 분해를 한 후 얻고자 하는 String[]의 요소크기라고 보시면 됩니다. limit가 분해하고자 하는 요소의 개수와 같거나 클 경우 요소의 개수만큼의 String[]을 되돌려 주지만, 요소의 개수보다 작을 경우 지정한 숫자만큼의 String[]으로 되돌려 줍니다.
좀 더 자세히 알고 싶으신 분들은 자바 원천 소스에서 java.lang.String과 java.util.StringTokenizer를 살펴보시기 바랍니다.
---------------- |
JFileChooser, window 열기 창, 저장 창, 파일 선택 창 (0) | 2012.08.30 |
---|---|
프레임 종료 코드 (0) | 2012.08.30 |
파일 읽기 (0) | 2012.08.30 |
파일 쓰기 (0) | 2012.08.30 |
이클립스 설치 및 PATH 설정 (0) | 2012.08.28 |
출처: http://wingh.egloos.com/4798604
BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
out.write(blahblah); out.newLine();
JFileChooser, window 열기 창, 저장 창, 파일 선택 창 (0) | 2012.08.30 |
---|---|
프레임 종료 코드 (0) | 2012.08.30 |
파일 읽기 (0) | 2012.08.30 |
String.split()과 StringTokenizer의 차이 (0) | 2012.08.30 |
이클립스 설치 및 PATH 설정 (0) | 2012.08.28 |
이클립스 설치]
아무 것도 없는 상태에서 이클립스 (Eclipse IDE for Java EE Developers 프로그램) 설치 시
1. JRE 다운로드 http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
이 때 만약 x64로 깔았는데 아무런 변화가 없다면
다시 i586 버전으로 설치하면 웹페이지에서 테스트 하라고 뜬다.
이 때 java(TM)을 설치해주어야 한다. <== 이 부분이 진행이 안되면 JDK 여전히 설치 안됨ㅡㅡ
그리고 설치 했는데도 제대로 동작하지 않을 때는 재부팅 ㄱㄱ
2. JDK 설치 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
3. 이클립스 다운로드
http://www.eclipse.org/ 사이트로 들어가서 Download Eclipse 에 들어간다.
이 후에 Eclipse Classic 을 다운받아서 설치.
Eclipse IDE for Java EE Developers 프로그램을 설치할 경우 자바 프로그램 개발 및 웹페이지 관련 프로그래밍 가능
PATH 설정]
출처: http://sens.tistory.com/129
3. User Environmental Variables Setting(시스템 변수 > 새로 만들기)
4. System Variables Setting(시스템 변수 > Path 선택 > 변수값 추가)
5. Confirming Installation
Windows Cmd > "java -version"
근데 이러한 path 설정은 사실 이클립스 프로그램 사용 시에는 별로 해 줄 필요 없음.
이러한 설정은 cmd line 에서 개발 혹은 실행을 원할 때 바로 사용 가능하도록 하기 위함.
JFileChooser, window 열기 창, 저장 창, 파일 선택 창 (0) | 2012.08.30 |
---|---|
프레임 종료 코드 (0) | 2012.08.30 |
파일 읽기 (0) | 2012.08.30 |
String.split()과 StringTokenizer의 차이 (0) | 2012.08.30 |
파일 쓰기 (0) | 2012.08.30 |