2011-10-30 4 views
0

java를 사용하여 파일에서 유니 코드 문자열을 검색하는 방법은 무엇입니까? 아래 코드는 내가 시도한 코드입니다. 유니 코드 이외의 문자열도 작동합니다.자바를 사용하는 파일에서 유니 코드 문자열을 검색하십시오.

import java.util.regex.Matcher; 
    import java.util.regex.Pattern; 
    import java.io.*; 
    import java.util.*; 
    class file1 
    { 
    public static void main(String arg[])throws Exception 
    { 
    BufferedReader bfr1 = new BufferedReader(new InputStreamReader(
      System.in)); 
    System.out.println("Enter File name:"); 
    String str = bfr1.readLine(); 
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
    String s; 
    int count=0; 
    int flag=0; 

    System.out.println("Enter the string to be found"); 
    s=br.readLine(); 
    BufferedReader bfr = new BufferedReader(new FileReader(str)); 
    String bfr2=bfr.readLine(); 
    Pattern p = Pattern.compile(s); 
      Matcher matcher = p.matcher(bfr2); 
      while (matcher.find()) { 
      count++; 
      }System.out.println(count); 
    }} 

답변

3

음, 문제의 세 가지 잠재적 인 소스는 내가 볼 수 있습니다 :

  • 정규 표현식이 올바르지 않을 수 있습니다. 정말로 이 필요합니까? 정규 표현식을 사용하고 싶습니까? 패턴 또는 간단한 문자열과 일치 시키려고합니까?
  • 명령 줄에서 ASCII가 아닌 입력을받지 못할 수도 있습니다. 유니 코드 문자로 입력 문자열을 덤프해야합니다 (코드 참조).
  • 잘못된 인코딩으로 파일을 읽는 것이 좋습니다. 현재 항상 플랫폼 기본 인코딩을 사용하는 FileReader을 사용하고 있습니다. 읽으려고하는 파일의 인코딩은 무엇입니까? 파일과 일치하는 명시 적 인코딩 (예 : UTF-8)을 사용하여 InputStreamReader에 싸여진 FileInputStream을 사용하는 것이 좋습니다.

    private static void dumpString(String text) { 
        for (int i = 0; i < text.length(); i++) { 
         char c = text.charAt(i); 
         System.out.printf("%d: %4h (%c)", i, c, c); 
         System.out.println(); 
        } 
    } 
    

    그런 식으로 당신은 문자열의 각 char의 정확한 UTF-16 코드 포인트를 볼 수 있습니다

나는 보통이 같은 것을 사용하는 것이 문자열에 실제 값을 디버깅합니다.

관련 문제