我已经看到了这样的事情的“拆分字符串”,但我需要一些具体的东西。我需要该程序来识别用户是否将特定单词放入句子中。我正在使用它编写一个非常非常低劣的基本AI程序。从句子中抓取单词
如果用户输入类似“你叫什么名字?”它会识别出用户说“姓名”并转到随机名称生成器。
从句子中抓取特定单词(忽略大小写)的代码是什么,所以我可以在以后使用它(如在if-else或其他东西中)?
我已经看到了这样的事情的“拆分字符串”,但我需要一些具体的东西。我需要该程序来识别用户是否将特定单词放入句子中。我正在使用它编写一个非常非常低劣的基本AI程序。从句子中抓取单词
如果用户输入类似“你叫什么名字?”它会识别出用户说“姓名”并转到随机名称生成器。
从句子中抓取特定单词(忽略大小写)的代码是什么,所以我可以在以后使用它(如在if-else或其他东西中)?
就个人而言,我会做到这一点:
if(string.toLowerCase().contains(" name")){
//Random Name generator
}
编辑: 经进一步修订,相信正则表达式是答案,正则表达式"\bname\b"
的工作,但你需要逃避它为Java这样"\\bname\\b"
。 .. @ JosefN的答案是你想要的..
我知道有一些像包含的东西,我只是不记得它。谢啦! (@Shaun Wild) –
这也会触发“装饰”,“锦标赛”和“珐琅”。 –
@DonReba - 完全... – TheLostMind
不使用contains()方法盲目...
public static void main(String[] args) {
String str = "hello my name is someGuy";
System.out.println(str.contains("name"));
String strNew = "hello my namespace is Test";
System.out.println(strNew.contains("name"));
}
OP : true
true
使用“何塞Fn“键的回答...
“我的名字,这是独一无二的......”,但这失败了。这里的正则表达式是最优的。 –
@MarioStoilov @MarioStoilov - 我完全同意......这就是为什么我说..如果你确定所有的单词都是由单个空格分开的,而且“名字”永远不会出现在任何其他的上下文中,那么使用“name”作为安全 – TheLostMind
,可以使用正则表达式支持用Java
Pattern patt = Pattern.compile("\\bname\\b");
Matcher m = patt.matcher(" v padaname bla");
System.out.println(m.find());
m = patt.matcher(" your name?");
System.out.println(m.find());
你可以使用string.contains()字的边界? – Zavior
或String.indexOf –