-1

Java で空白または数字を除くすべての句読点を削除する方法。

"\\p{Punct}|\\d", "" //THIS WORKS BUT IT REMOVES THE NUMBERS AND I DONT WANT IT TO REMOVE THE NUMBERS...

テキストを読んでいて、句読点を削除する必要があります。

String[] internal;
char ch = 'a';
int counter = 1;
int count;
int c;
Map<String, Set> dictionary = new HashMap<String, Set>();
BufferedReader in = new BufferedReader(new FileReader("yu.txt"));
while (in.ready()) {
    internal = (((in.readLine()).replaceAll("\\p{Punct}|\\d", "")).toLowerCase()).split(" ");//this does not work in my case cause it removes numbers... and makes them whitespaces but other than that this one works I JUST dont want it to remove numbers and keep whitespaces...
    for (count = 0; count < internal.length; count++) {
        if (!dictionary.containsKey(internal[count])) {
            dictionary.put(internal[count], new HashSet());
        }
        if (dictionary.get(internal[count]).size()<10)
        {
        dictionary.get(internal[count]).add(counter);
        }
    }
    counter++;
}
Iterator iterator = dictionary.keySet().iterator();  
while (iterator.hasNext()) {  
String key = iterator.next().toString();  
String value = dictionary.get(key).toString();  
System.out.println(key + ": " + value );  
}  
4

2 に答える 2

0

str = str.replaceAll("[^0-9a-zA-Z\s]", "X");

于 2012-06-07T06:41:31.120 に答える
0

そうすることができる既存のクラス(デフォルト)を知りません。

String を 1 文字ずつ通過するロジックを記述し、その文字が句読点かどうかを確認する必要があります。その場合は、1 文字前の文字列を切り取り、残りの部分を追加します (その文字/句読点を効果的に削除します)。

String を直接操作する代わりに、StringBuilder または StringBuffer を使用することをお勧めします。

String.substring() メソッドを使用して文字列を切り取ります。


それ以外の場合は、String.replace()/String.replaceAll() メソッドを使用して、すべての句読点 (特定の文字をエスケープする必要があります) を "" に置き換えます。

于 2012-06-07T06:42:49.447 に答える