【发布时间】:2018-08-27 18:12:07
【问题描述】:
这是我在 Java 的 String.indexOf() 和 String.contains() 方法中发现的一种奇怪行为。如果我有一个 non-empty 字符串显示blablabla,并且我尝试在其中查找一个空字符串,它总是返回true,而我希望它返回false。
那么基本上,为什么下面的代码返回 true 和 0 ?
String testThis = "";
String fileName = "blablablabla";
System.out.println(fileName.contains(testThis));
System.out.println(fileName.indexOf(testThis));
从逻辑上讲(至少对我而言)"" 不会出现在 blablablabla 中,但 indexOf("") 说会出现,为什么?
【问题讨论】:
-
你如何证明文件名的开头没有空字符串?您必须找到出现在空字符串中但未出现在 fileName 中的字符。
-
Ï 想,至少这就是我在这里的原因,对“”的包含搜索应该抛出异常,因为它不合逻辑。我敢肯定,从 30 年前的一些 c 基本态度来看,这符合旧编译器。但对于 普通 人来说,这不合逻辑。