为什么contains()方法在Java中的非空字符串中找到空字符串
这是我在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此时此刻。
""
出现在每个角色之间以及开始和结束之间。