Java 删除字符串上的标点符号(还有 ’ “ ” 和所有这些)保持重音字符
Java remove punctuation on a String (also ’ “ ” and all of these) maintaining accents characters
我需要删除文件中的标点符号,同时保留重音字符
我尝试了此代码,但无法正常工作。
Expectation: input=> ’'qwe..,rty ‘èeéò’“ ”o" "à output=> qwertyèeéòoà
Effective result: input=> ’'qwe..,rty ‘èeéò’“ ”o" "à output=>’qwerty ‘èeéò’“ ”o" "à
我无法删除 ’“”
个符号和其中的其他符号
注意:Eclipse
和filetext.txt
设置为UTF-8
。
谢谢
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");
}
}
}
默认情况下,正则表达式 \p{Punct}
仅匹配 US-ASCII 标点符号,除非您启用 Unicode 字符 类。这意味着您编写的代码只会删除这些字符:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
如果您想匹配 Unicode 联盟归类为标点符号的所有内容,请尝试 \p{IsPunctuation}
,它始终检查 Unicode 字符属性并匹配示例中的所有标点符号(以及更多!)。
要替换空格和标点符号,就像在您的示例中一样,您可以使用:
line = line.replaceAll("\p{IsPunctuation}|\p{IsWhite_Space}", "");
我需要删除文件中的标点符号,同时保留重音字符 我尝试了此代码,但无法正常工作。
Expectation: input=> ’'qwe..,rty ‘èeéò’“ ”o" "à output=> qwertyèeéòoà
Effective result: input=> ’'qwe..,rty ‘èeéò’“ ”o" "à output=>’qwerty ‘èeéò’“ ”o" "à
我无法删除 ’“”
个符号和其中的其他符号
注意:Eclipse
和filetext.txt
设置为UTF-8
。
谢谢
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");
}
}
}
默认情况下,正则表达式 \p{Punct}
仅匹配 US-ASCII 标点符号,除非您启用 Unicode 字符 类。这意味着您编写的代码只会删除这些字符:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
如果您想匹配 Unicode 联盟归类为标点符号的所有内容,请尝试 \p{IsPunctuation}
,它始终检查 Unicode 字符属性并匹配示例中的所有标点符号(以及更多!)。
要替换空格和标点符号,就像在您的示例中一样,您可以使用:
line = line.replaceAll("\p{IsPunctuation}|\p{IsWhite_Space}", "");