从String获取任何子字符串

时间:2017-04-04 11:56:22

标签: java arrays string

我想从字符串中获取特定类型的子字符串。 例如,我希望能够从字符串Computer Science获取子字符串String text = "I studied Computer Science";

另一个例子是从字符串Physics获取子串String text = "I studied Physics for 5 years at the University of XXXXXXX";

拜托,我怎么能实现这个目标?感谢

注意:对于所有其他类型的课程,它应该是灵活的。

3 个答案:

答案 0 :(得分:1)

如果您只想查看以前知道的单词是否在句子中,您可以使用contains。例如,如果您要在您的函数中接收计算机科学 Physics 作为参数。

public boolean checkIfExists(String word) {
   return sentence.contains(word)
}

如果你不知道你会搜索什么类型的单词,但你知道句子的结构:“我研究过XXXX ...”你可以使用indexOf然后搜索下一个空白字符ang获取索引和下一个空白字符之间的单词。

如果您知道可以搜索的所有可能课程,您可以构建Set结构并检查所有课程(如果句子中存在某些课程)。

Set<String> courses = {Physics, Computer Science, Maths}
public boolean checkIfExists(String word) {
   return courses.contains(word);
}

如果你不知道以前的任何一个案例,我认为问题很难,你必须去NLP

答案 1 :(得分:1)

您的问题与机器学习有关。 你必须相应地处理你的句子..

你可以标记你的句子中的名词,动词[发言的部分]并将其分解并用一些逻辑来找到像物理一样的名词。

请找到您可以通过其标记每个单词的API,了解更多信息。 的 https://opennlp.apache.org/

答案 2 :(得分:0)

您需要的是模式匹配方法。这是一个学习典型问题的机器,使用像Python这样的语言很容易解决。在Java中,您可以使用Pattern类,您会发现这个答案很有用:pattern.matcher() vs pattern.matches()