Java String.indexOf 和空字符串

新手上路,请多包涵

我很好奇为什么 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

原文由 tmeisenh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 515
2 个回答

空字符串无处不在,无处不在。它时时刻刻都在所有弦中,渗透着它们存在的本质,然而当你寻找它时,你永远不会瞥见它。

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

学生对老师说,

老师,我相信我已经找到了空串的本质。空弦犹如一粒尘埃,在一束阳光下自由飘荡,如同尘埃在房间中自由飘荡。

老师回应学生,

唔。好主意。现在告诉我,灰尘在哪里,阳光在哪里?

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

原文由 Pointy 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

原文由 T . 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏