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" "à 

私は’“”シンボルとこれら

ノートの他を削除することはできません。

には、Unicode文字クラスを有効にしない限り

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

あなたがすべてのUnicode句読点や記号を削除したいようです。 'line = line.replaceAll("(?U)[\\ p {S} \\ p {P}] + "、" ");' –

答えて

5

正規表現\p{Punct}のみ、デフォルトではUS-ASCIIの句読点にマッチしていただきありがとうございます。それはあなたのコードは、書かれたように、これらの文字のみを削除することを意味します

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

あなたは、Unicodeコンソーシアムが句読点として分類され、すべてを一致させたい場合は、常にUnicode文字プロパティをチェックし、すべてのpunctiuationにマッチする、代わりに\p{IsPunctuation}を試してみてくださいあなたの例では(そしてもっと!)。あなたの例では、あなたが使用するように、空白文字だけでなく、句読点を置き換えるために

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

これは私のやり方で動作します。ありがとうございました!! – Giammarco

+0

ワンダ!より明確にするために、変更されたDataCounterMainクラスを答えに入れてください。 –

+1

@VinayPrajapati私は例を追加しました。 –

関連する問題