我在阅读文件并删除文件中的所有标点符号时遇到了一些问题。 以下是我目前的情况,我无法弄清楚为什么" ----"和" *****"仍会发生。
有人能指出我的方向,弄清楚我需要如何调整我的replaceAll(),以确保可以删除重复出现的标点符号吗?
public void analyzeFile(File filepath) {
try {
FileInputStream fStream = new FileInputStream(filepath);
DataInputStream in = new DataInputStream(fStream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String textFile = "";
String regex = "[a-zA-Z0-9\\s]";
String putString = "";
wordCount = 0;
while ((textFile = br.readLine()) != null) {
if (!textFile.equals("") && textFile.length() > 0) {
String[] words = textFile.split(" ");
wordCount += words.length;
for (int i = 0; i < words.length; i++) {
putString = cleanString(regex, words[i]);
if(putString.length() > 0){
mapInterface.put(putString, 1);
}
}
putString = "";
}
}
in.close();
} catch (Exception e) {
System.out.println("Error while attempting to read file: "
+ filepath + " " + e.getMessage());
}
}
private String cleanString(String regex, String str){
String newString = "";
Pattern regexChecker = Pattern.compile(regex);
Matcher regexMatcher = regexChecker.matcher(str);
while(regexMatcher.find()){
if(regexMatcher.group().length() != 0){
newString += regexMatcher.group().toString();
}
}
return newString;
}
答案 0 :(得分:-1)
当然,您可以使用\w
转义的字母数字字符?这将识别所有字母和数字,但不识别标点符号。
putString = words[i].replaceAll("[^\w]+", "");
这会将任何非单词字符替换为空字符串。