2 回答
TA贡献1946条经验 获得超3个赞
您可以使用该replace()方法替换您不感兴趣的字符串部分,例如:
String[] replaceInResponse = new String[] { "Hey I am", "My name is" };
String response = "Hey I am mark";
for (String s : replaceInResponse) {
if (response.contains(s)) {
response = response.replace(s, "").trim();
break;
}
}
System.out.println(response); // Prints `mark`
TA贡献1825条经验 获得超6个赞
您可以尝试检测一个常见模式并设计一个正则表达式来处理该模式,而不是完全处理这些句子。例如,在您的所有句子中,名称是句子中的最后一个单词。此外,名称是唯一以大写字母开头的多字符单词。
String[] tests = {
"My name is Fred",
"My name is Fred.",
"Hi, My name is Fred.",
"Hey, I am Fred!",
};
Pattern p = Pattern.compile("\\b([A-Z][a-z]+)[^\\w]*$");
for (String test : tests) {
Matcher m = p.matcher(test);
m.find();
System.out.println(m.group(1));
}
所有测试的输出是Fred. 这些规则也应该适用于该输入的其他变体,虽然肯定不是全部,但也许您可以想出更好的方法。
添加回答
举报