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. 這些規則也應該適用于該輸入的其他變體,雖然肯定不是全部,但也許您可以想出更好的方法。
添加回答
舉報