4

악센트 부호 문자를 유지하면서 파일에서 문장 부호를 제거해야합니다. 이 코드를 시도했지만 어떻게 작동하지 않습니다. Eclipsefiletext.txtUTF-8로 설정됩니다Java는 악센트 부호 문자를 유지하는 문자열 (또한 "" "및"모두)의 구두점을 제거합니다.

Expectation: input=> ’'qwe..,rty ‘èeéò’“ ”o" "à  output=> qwertyèeéòoà 

Effective result: input=> ’'qwe..,rty ‘èeéò’“ ”o" "à output=>’qwerty ‘èeéò’“ ”o" "à 

나는 ’“” 기호와이

참고 다른를 제거 할 수 없습니다.

는 유니 코드 문자 클래스를 사용하지 않는

import java.io.*; 
import java.util.Scanner; 

public class DataCounterMain { 
    public static void main (String[] args) throws FileNotFoundException { 

    File file = new File("filetext.txt"); 

    try { 
     Scanner filescanner = new Scanner(file); 
     while (filescanner.hasNextLine()) { 

      String line = filescanner.nextLine(); 
      line=line.replaceAll ("\\p{Punct}", ""); 

      System.out.println(line); 
     } 
    } 
    catch(FileNotFoundException e) { 
     System.err.println(file +" FileNotFound"); 
    } 
    } 
} 
+0

:

은 예처럼, 다음을 사용, 문장 부호뿐만 아니라 공백을 대체합니다. 'line = line.replaceAll ("(? U) [\\ p {S} \\ p {P}] +", "");' –

답변

5

정규식 \p{Punct} 만, 기본적으로 US-ASCII의 문장 부호와 일치 해 주셔서 감사합니다. 당신은 항상 유니 코드 문자 속성을 확인하고 모든 punctiuation 일치하는 대신 \p{IsPunctuation}를, 유니 코드 컨소시엄이 문장으로 분류 된 모든 일치 시도 할 경우

!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~ 

: 그것은 당신의 코드가 서면으로 만 이러한 문자를 제거하는 것을 의미 귀하의 예를 들어 (그리고 더!). 당신이 모든 유니 코드 문장 부호 및 기호를 제거 할 것

    
     line = line.replaceAll("\\p{IsPunctuation}|\\p{IsWhite_Space}", ""); 
        
+0

그것은 내가 원하는 방식으로 작동합니다. 고맙습니다!! – Giammarco

+0

방황! 더 명확하게하기 위해 수정 된 DataCounterMain 클래스를 답안에 넣으시겠습니까? –

+1

@VinayPrajapati 예제를 추가했습니다. –