Java从句子中提取子字符串

标签 java

有诸如“is”、“is not”、“不包含”之类的单词组合。我们必须将这些单词匹配到一个句子中,并且必须将其拆分。

输入:如果姓名是 tom 并且年龄不是 45 岁或姓名不包含 tom,请告诉我。

预期输出:

If name is 
tom and age is not 
45 or name does not contain 
tom then let me know

我尝试了下面的代码来分割和提取,但是“is”的出现也在“is not”中,我的代码无法找到:

public static void loadOperators(){
        operators.add("is");
        operators.add("is not");
        operators.add("does not contain");
    }

public static void main(String[] args) {
    loadOperators();
    for(String s : operators){
        System.out.println(str.split(s).length - 1);
    }
}

最佳答案

由于单词可能多次出现,split 无法解决您的用例,就像 isis not 对您来说是不同的运算符。理想情况下,您会:

Iterate :
1. Find the index of the 'operator'.
2. Search for the next space _ or word.
3. Then update your string as substring from its index to length-1.

关于Java从句子中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46299056/

相关文章:

Java:如何监视普通套接字连接(并将结果转发到内部记录器)

java - Selenium:如何从另一个类调用方法(截图)

java - 如何访问链表的元素?

java - 无法使用 java sdk 在 aws s3 上使用预签名 url 上传

java - 如何让线条动画更流畅?

java - 如何为 Elasticsearch 自定义插件编写测试?

Java "abc"== "abc"操作

java - 安卓 : want to access to a textview in a viewholder in my mainactivity

java - 如何在 Java 中同步 Map <-> MySQL?

java - beanshell 相当于 continue