Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

7年前关闭。



Improve this question




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

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

编辑:在Javadocs中没有任何地方直接说 endindex 不能为负。其他语言和库中也有子字符串的实现,这些实现允许终结号为负,但不允许为负beginindex,因此明确声明这一点似乎很重要。也没有任何暗示。 (编辑:好的,它的含义很松散,但我和显然是亲自问过我这个问题的其他人仍然觉得不清楚。这是一个简单的问题,我没有提供,我实际上是想找到答案。这个琐碎的问题)

最佳答案

否。不允许使用负索引。

String#substring(int beginIndex, int endIndex):



虽然文档没有直接说明endIndex不能为负1,但是可以派生该值。重写相关需求会得出以下事实:

  • “beginIndex不能为负”-> beginIndex >= 0
  • “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” subSequence文档中还有一个重要的错字。)

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

    10-17 01:45