gpt4 book ai didi

java - 在 Java 中,你可以使用负数和子字符串吗?

转载 作者:IT老高 更新时间:2023-10-28 20:57:45 29 4
gpt4 key购买 nike

Java中string.substring的结束索引可以用负数吗?

例子:

String str = "test";
str.substring(0, str.indexOf("q"));

编辑:javadocs 中没有直接说明 endindex 不能为负数。其他语言和库中的 substring 实现允许负 endindex 但不允许负 beginindex,因此明确说明这一点似乎是相关的。它也没有以任何方式暗示。 (编辑:好的,这暗示得很松散,但我和显然其他亲自问过我这个问题的人仍然觉得它很不清楚。这本来是一个简单的问答,我提供的并不是我实际上试图找到答案这个琐碎的问题)

最佳答案

没有不允许使用负索引。

来自 String#substring(int beginIndex, int endIndex) :

Throws: IndexOutOfBoundsException - if the beginIndex is negative, or endIndex is larger than the length of this String object, or beginIndex is larger than endIndex.

虽然文档没有直接说明 endIndex 不能为负1,但这可以推导出来。重写相关需求会产生以下事实:

  1. "beginIndex 不能为负数"-> beginIndex >= 0
  2. "beginIndex 必须小于等于 endIndex"-> endIndex >= beginIndex

因此要求 endIndex >= beginIndex >= 0 这意味着 endIndex 不能为负数。


无论如何,str.substring(0, -x) 可以简单地重写为 str.substring(0, str.length() - x),假设我们对负端指数的含义有相同的想法。当然,原来的绑定(bind)要求仍然适用。


1 奇怪的是,String#subSequence 确实明确禁止负的 endIndex。鉴于此,感觉可以清理文档,以便两种方法共享相同的简化前置条件文本。 (作为奖励:“Java 7”子序列文档中还有一个重要的错字。)

关于java - 在 Java 中,你可以使用负数和子字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19647077/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com