试图将单数单词在Java中转换为单数,例如foxes转换为fox,但它删除任何's'是错误的
文件读取器功能如下:
public static String readFileAsString(String fileName) throws Exception {
String data = "";
data = new String(Files.readAllBytes(Paths.get(fileName)));
return data;
}奇点变换器功能如下;
public static String singular(String data) {
Pattern pattern = Pattern.compile("");
if (Pattern.matches("(/ss)$", data)) {
data = data.replaceAll("(s|es)", (" "));
} else {
data = data.replaceAll("(s|es)", (" "));
}
return data;
}实际上,我知道我不应该使用Pattern pattern = Pattern.compile("");,但我不知道如何使用它。
发布于 2021-01-02 15:46:48
似乎您需要一个简单的解决方案,在单词末尾查找s或es,然后删除它们。
要做到这一点,您需要确保找到的s或es位于一个单词的末尾,即至少有一个字母之前,而没有后面的字母。为此,请使用\b单词边界和\B非单词边界模式。
您应该使用可选的(s|es),而不是e,后面是s,即e?s
data = data.replaceAll("\\Be?s\\b", "");示例
String data = "The quick brown foxes jumps over the lazy dogs";
data = data.replaceAll("\\Be?s\\b", "");
System.out.println(data);输出
The quick brown fox jump over the lazy dog注意,代码的错误前提(所有以s结尾的单词都是复数词)也将jumps更改为jump。
https://stackoverflow.com/questions/65540869
复制相似问题