这是我在Java String.indexOf()
和String.contains()
方法中发现的怪异行为。如果我有一个非空字符串说,blablabla
并且我试图在其中查找一个空字符串,则它总是会返回,true
而我希望它会返回false
。
因此,基本上,为什么下面的代码返回true和0?
String testThis = "";
String fileName = "blablablabla";
System.out.println(fileName.contains(testThis));
System.out.println(fileName.indexOf(testThis));
逻辑上(至少对我来说)""
不会发生,blablablabla
但会indexOf("")
说发生,为什么?
空字符串出现在每个字符串中。具体来说,字符串的连续子集必须与空字符串匹配。任何空子集都是连续的,并且任何字符串都有一个空字符串作为子集。
当且仅当此字符串包含指定的char值序列时,才返回true。
在任何字符串中,字符的开头,结尾和字符之间都存在一组空的char值。从任何东西中,您都无法提取任何东西。从物理上的字符串/纱线中,我可以说其中存在零长度部分。
如果contains返回true,则可能substring(
调用以获取字符串。"aaa".substring(1,1)
应该返回""
,但请不要在此引用我的信息,因为我目前没有IDE。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句