2012-02-06 143 views
-1

我这样做了,只有以'/ msg'或'/ logout'开头的消息才会提交。indexOf不能正常工作?

但是,用户仍然可以发送消息!我的代码有问题吗?

if ((msg.indexOf("/msg") != 0) && (msg.indexOf("/logout") != 0)) 
{ 
    return; 
} 
+0

我甚至尝试用'!=='替换'!=',但它仍然无效。 – Dav 2012-02-06 19:00:27

+0

我认为你的逻辑很好..尝试追踪'msg'的值来查看它是否检出。 – paislee 2012-02-06 19:35:29

+0

请不要在标题中添加标签。谢谢。 – Will 2012-02-07 17:23:44

回答

4

indexOf将返回-1,如果String没有找到否则将返回索引发现这是> = 0

所以你的测试必须是:

if ((msg.indexOf("/msg") < 0) && (msg.indexOf("/logout") < 0)) 
{ 
return; 
} 

if ((msg.indexOf("/msg") == -1) && (msg.indexOf("/logout") == -1)) 
{ 
return; 
} 
+0

该问题指出只有带有“/ msg”和“/ logout”的消息__starting__是可接受的(“indexOf”返回0)。您的解决方案将在“msg”中接受这些字符串_anywhere_ ... – paislee 2012-02-06 19:16:16

+0

P.S. - 这与OP的代码一样工作,但接受更多消息,因此不正确。我相信这个问题必须在别处。 – paislee 2012-02-06 19:26:51

+0

原来我的代码确实有效。问题出在我忽略向你展示的代码中,但是我修复了它。无论如何感谢您的帮助,并且很高兴您也抓住了它。 :) 8小时内,我接受答案或自己回答或回答? – Dav 2012-02-06 19:39:11

0

原来我的代码确实有效。问题出在我忽略向你展示的代码中,但是我修复了它。

感谢您的帮助。 :)