Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
7年前关闭。
Improve this question
负数可以用作Java中string.substring的结束索引吗?
例:
编辑:在Javadocs中没有任何地方直接说 endindex 不能为负。其他语言和库中也有子字符串的实现,这些实现允许终结号为负,但不允许为负beginindex,因此明确声明这一点似乎很重要。也没有任何暗示。 (编辑:好的,它的含义很松散,但我和显然是亲自问过我这个问题的其他人仍然觉得不清楚。这是一个简单的问题,我没有提供,我实际上是想找到答案。这个琐碎的问题) “beginIndex不能为负”-> “beginIndex必须小于或等于endIndex”->
因此,要求
无论如何,假设我们对负端索引的含义是相同的,可以将
1奇怪的是,
想改善这个问题吗?更新问题,以便将其作为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 >= 0
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