2013-12-20 59 views
0

我已经看到了这样的事情的“拆分字符串”,但我需要一些具体的东西。我需要该程序来识别用户是否将特定单词放入句子中。我正在使用它编写一个非常非常低劣的基本AI程序。从句子中抓取单词

如果用户输入类似“你叫什么名字?”它会识别出用户说“姓名”并转到随机名称生成器。

从句子中抓取特定单词(忽略大小写)的代码是什么,所以我可以在以后使用它(如在if-else或其他东西中)?

+2

你可以使用string.contains()字的边界? – Zavior

+0

或String.indexOf –

回答

1

就个人而言,我会做到这一点:

if(string.toLowerCase().contains(" name")){ 
//Random Name generator 
} 

编辑: 经进一步修订,相信正则表达式是答案,正则表达式"\bname\b"的工作,但你需要逃避它为Java这样"\\bname\\b"。 .. @ JosefN的答案是你想要的..

+0

我知道有一些像包含的东西,我只是不记得它。谢啦! (@Shaun Wild) –

+2

这也会触发“装饰”,“锦标赛”和“珐琅”。 –

+0

@DonReba - 完全... – TheLostMind

0

不使用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“键的回答...

+1

“我的名字,这是独一无二的......”,但这失败了。这里的正则表达式是最优的。 –

+1

@MarioStoilov @MarioStoilov - 我完全同意......这就是为什么我说..如果你确定所有的单词都是由单个空格分开的,而且“名字”永远不会出现在任何其他的上下文中,那么使用“name”作为安全 – TheLostMind

3

,可以使用正则表达式支持用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());