首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图将复数词转换为单数,但它删除了任何单词。

试图将复数词转换为单数,但它删除了任何单词。
EN

Stack Overflow用户
提问于 2021-01-02 15:34:20
回答 1查看 75关注 0票数 1

试图将单数单词在Java中转换为单数,例如foxes转换为fox,但它删除任何's'是错误的

文件读取器功能如下:

代码语言:javascript
复制
public static String readFileAsString(String fileName) throws Exception {
    String data = "";
    data = new String(Files.readAllBytes(Paths.get(fileName)));
    return data;
}

奇点变换器功能如下;

代码语言:javascript
复制
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("");,但我不知道如何使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-02 15:46:48

似乎您需要一个简单的解决方案,在单词末尾查找ses,然后删除它们。

要做到这一点,您需要确保找到的ses位于一个单词的末尾,即至少有一个字母之前,而没有后面的字母。为此,请使用\b单词边界和\B非单词边界模式。

您应该使用可选的(s|es),而不是e,后面是s,即e?s

代码语言:javascript
复制
data = data.replaceAll("\\Be?s\\b", "");

示例

代码语言:javascript
复制
String data = "The quick brown foxes jumps over the lazy dogs";
data = data.replaceAll("\\Be?s\\b", "");
System.out.println(data);

输出

代码语言:javascript
复制
The quick brown fox jump over the lazy dog

注意,代码的错误前提(所有以s结尾的单词都是复数词)也将jumps更改为jump

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65540869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档