이클립스 Text file encoding을 설정해 보자

 

예) Window > Preferences > General > Workspace 들어가서

Text file encoding을 UTF-8로 설정해본다.

최초 설치시에는 MS949로 되어있지만 workspace(전체)내에서의 설정을 바꾸었으니

이제부터 파일을 새로 만들면 기본으로 utf-8 문서로 생성된다.

 

MS949를 UTF-8 이나 EUC_KR 로도 바꾸어보자

 



출처 -  http://blog.naver.com/dhkimkorea98?Redirect=Log&logNo=70095015192 







'IDE & Build > Eclipse' 카테고리의 다른 글

mylyn  (0) 2012.03.12
~ cannot be resolved to a type 오류 대처법  (0) 2012.03.11
이클립스 자동완성 기능  (0) 2012.03.09
이클립스 svn 패스워드 삭제  (0) 2012.03.09
이클립스 출력창에서 한글 깨짐 현상  (0) 2012.03.08
Posted by linuxism
,

이클립스 자동완성 기능 사용하기

 

작성자 : choijuho

 

이클립스에서 자동완성기능은 일부만 활성화 되어 있다.

 

이클립스의 Window-Preference를 클릭 후,

Preference 메뉴에서 Java-Editor-Content Assist-Advanced 메뉴에서 다른 Default Proposal Kinds의 항목에 체크를 하면 자동완성기능이 활성화된다.

 

한글화된 인터페이스의 경우,

환경설정 메뉴에서 Java-편집기-컨텐츠지원-고급 메뉴의 기본제안유형 항목에서 원하는 유형에 체크를 하면 해당 유형의 자동완성기능이 활성화된다.

 

마지막으로 자동완성 기능을 불러오는 방법은 기본적으로 . 을 찍거나 타자 입력 중간에 CTRL+Space를 누르면 된다. 

 

예) BufferedReader의 경우,

B까지 치고 CTRL+Space를 누른다.

 


출처 -  http://mygirl2.blog.me/40102189494 


Posted by linuxism
,

split는 문자열을 나누는 메서드다.

String 문자열 = "가:나:다:가나다";
String[] 나눈배열 = 문자열.split(":");
//나눈배열 : {"가", "나", "다", "가나다"}
System.out.println(나눈배열[0]);
//결과 : 가
System.out.println(나눈배열[나눈배열.length-1]);
//결과 : 가나다

그런데 아래처럼 쓰면 작동을 안 한다.

String 문자열 = "가.나.다.가나다";
String[] 나눈배열 = 문자열.split(".");

이렇게 써야 한다.

String 문자열 = "가.나.다.가나다";
String[] 나눈배열 = 문자열.split("\\.");

그래야 작동한다.

이건 split의 인자로 들어가는 String 토큰이 regex 정규식이기 때문이다. 정규식에서 .은 무작위의 한 글자를 의미한다. 그러면 모든 문자가 토큰이 되기 때문에 배열에 남는 게 없게 되는 것이다.

따라서 이스케이프 문자를 앞에 붙여 줘야 한다. 그런데 String 안에 이스케이프 문자인 \를 써 주려면 \\라고 써 줘야 한다. 따라서 \\라고 쓰는 것이다. 그래서 \\.이라고 쓰면 정규식 쪽에서는 \.라고 인식을 하고 실제 .을 찾게 되는 것이다.

아악… 머리아프다. 여튼 기억하라. 기호를 써서 split를 쓸 때 뭔가 작동을 안 하면 \\을 붙여 보라.

참, 그냥 \라고만 붙여야 하는 것도 있는데, 아래 애들이다.

\b \t \n \f \r \” \’ \\

참고하면 될 것이다.













StringTokenizer st = new StringTokenizer("this is a test");
     while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
     }

 실행결과

    this
     is
     a
     test

--------------------------------------------------------

[StringTokenizer 예시] 

 

** Token의 타입은 String이다~!!

token의 갯수를 새고 싶을 땐 countTokens()메소드 이용한다.

 

import java.util.StringTokenizer;

public class AnalyzeSentence {

    public static void main(String[] args){
        AnalyzeSentence analyzer = new AnalyzeSentence();
        String sentence = "I have the strangest feeling.";
        int resultWithTrue = 0;
        int resultWithFalse = 0;
        resultWithTrue = analyzer.analyzeSentence(sentence, true);
        resultWithFalse = analyzer.analyzeSentence(sentence, false);
       
        System.out.println("결과 예상값 : 5, 실제 결과값 : "+resultWithTrue);
        System.out.println("결과 예상값 : 29, 실제 결과값 : "+resultWithFalse);
    }
   
    public int analyzeSentence(String sentence, boolean isWord){
     
     int count=0;
     if( isWord == true){
      StringTokenizer st = new StringTokenizer(sentence," ");
      while( st.hasMoreTokens() ){
       st.nextToken();
       count++;
   }
     }else{
      count = sentence.length();
     }

    return count;
    }
}


출처 - http://blog.naver.com/ksgod10?Redirect=Log&logNo=50132576376










문자열을
특정 Token을 이용해서 분리할 때,
대번에 생각나는 API는 역시 StringTokenizer가 아닐까??


Class StringTokenizer
The string tokenizer class allows an application to break a string into tokens. The tokenization method is much simpler than the one used by the StreamTokenizer class. The StringTokenizer methods do not distinguish among identifiers, numbers, and quoted strings, nor do they recognize and skip comments.

The following is one example of the use of the tokenizer. The code:
     StringTokenizer st = new StringTokenizer("this is a test");
     while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
     }
 
prints the following output:
     this
     is
     a
     test
(from JDK 5.0 document)

StringTokenizer는
손쉽게 문자열을 특정 Token으로 분리하는 것이 가능하다.

하지만, StringTokenizer를 사용하다 보면, 다음과 같은 문제가 발생할 때가 있다.
아래와 같은 문자열을 분리한다고 하자

박찬호/35/LA다저스//한국

이 문자열을 '/'를 이용해서 분리하게 되면 다음과 같은 결과를 얻을 수 있다.

박찬호
35
LA다저스
한국

Token사이에 값이 없으면 결과에서 생략되는 것을 볼 수 있다.

다음과 같은 문자열을 분리하는 경우르 보자.

source :
영어,한글,중국어,일어
boy,소년,,ボ―イ

output :
영어 -> boy
한글 -> 소년
중국어 -> ボ―イ
일어 -> null

Token을 기준으로 특정 위치에 값이 반드시 들어가야 하는 경우,
StringTokenizer를 사용하면 상당히 귀찮은 노가다성 작업이 필요하게 된다..;;

위와 같은 경우 생략된 값을 처리할 좋은 방법이 없을까?

String class의 split() method를 사용해 보자..

String str = "boy,소년,,ボ―イ";
String[] output = str.split(",");

output :
boy
소년

ボ―イ

생략된 값까지 포함된 배열을 얻을 수 있으므로,
일단, 귀찮은 작업을 해주지 않아도 될꺼 같다..ㅋㅋ;

그럼 필드의 마지막이 생략된 경우는 어떨까??

source :
영어,한글,중국어,일어,독어
boy,소년,,ボ―イ,

output :
영어 -> boy
한글 -> 소년
중국어 -> ""
일어 -> ボ―イ
독어 -> null

output1.length = 5
output2.length = 4

안타깝게도 마지막 값이 생략된 경우는,
결과에 포함되지 않는 것을 알 수 있다..

JDK Document에서 String.split() method를 보면,
다음 두가지가 있음을 알 수 있다.

public String[] split(String regex)
public String[] split(String regex, int limit)

limit 값을 넘겨줄 수 있는 method를 사용해 보자.

String str = "boy,소년,,ボ―イ,";
String[] output = str.split(",", 5);

output :
영어 -> boy
한글 -> 소년
중국어 -> ""
일어 -> ボ―イ
독어 -> ""l

output.length = 5

정확히 필드의 값들이 매치되는 것을 볼 수 있다.

limit값은  split()의 결과로 받게 되는
String[]의 크기를 나타내는 값이다.


결론 :

다수의 정형화된 문자열을 분리하는데는 StringTokenizer가 편리하지만
정형화 되지 않은 문자열을 분리하는 경우는 String.split()가 더 편리할 수 있다.
(노가다로 해줘야 하는 작업이 줄어든다..ㅋ;)

물론,
필드의 갯수가 엉망인 문자열을 분리하는데는 String.split()로도 부족하다..


출처 - http://stylekai.tistory.com/105



Posted by linuxism
,