Java String.indexOf 和空字符串

2022-09-01 01:11:56

我很好奇为什么String.indexOf在询问字符串中空字符串的索引时返回0(而不是-1)。

Javadocs 只说此方法返回指定字符串的此字符串中的索引,如果未找到该字符串,则返回 -1。

对我来说,这种行为似乎非常出乎意料,我本来以为-1。任何想法为什么这种意想不到的行为正在发生?我至少认为这在方法的Javadocs中值得注意......

System.out.println("FOO".indexOf("")); // outputs 0 wtf!!!
System.out.println("FOO".indexOf("bar")); // outputs -1 as expected
System.out.println("FOO".indexOf("F")); // outputs 0 as expected
System.out.println("".indexOf("")); // outputs 0 as expected, I think

答案 1

空字符串无处不在,无处可去。它始终存在于所有弦中,渗透着他们存在的本质,然而当你寻求它时,你永远不会瞥见。

一个字符串的开头可以容纳多少个空字符串?

学生对老师说:

老师,我相信我已经找到了空字符串的本质。空的绳子就像一团尘埃,它自由地漂浮在一根绳子上,就像灰尘在房间里自由漂浮,在一束阳光下闪闪发光。

老师回应了学生,

嗯。一个很好的概念。现在告诉我,灰尘在哪里,阳光在哪里?

老师用皮带敲打学生,指示他继续冥想。


答案 2

好吧,如果它有帮助,您可以将其视为."FOO""" + "FOO"