负数可以用作Java中string.substring的结束索引吗?
例:
String str = "test";
str.substring(0, str.indexOf("q"));
编辑:在Javadocs中没有任何地方直接说endindex不能为负。其他语言和库中也有子字符串的实现,这些实现允许负的endindex但不允许负的beginindex,因此明确声明这一点似乎很重要。也没有任何暗示。(编辑:好的,它的含义很松散,但我和显然是亲自问过我这个问题的其他人仍然觉得不清楚。这是一个简单的问题,我没有提供,我实际上是想找到答案。这个琐碎的问题)
没有。负指数不会允许的。
从String#substring(int beginIndex,int endIndex):
抛出:IndexOutOfBoundsException-如果beginIndex为负,或者endIndex大于此String对象的长度,或者beginIndex大于endIndex。
虽然文档没有直接说明endIndex不能为负1,但这可以派生。重写相关需求会得出以下事实:
beginIndex >= 0
endIndex >= beginIndex
因此,endIndex >= beginIndex >= 0
这意味着endIndex不能为负。
无论如何,假设我们对负端索引的含义有相同的想法,str.substring(0, -x)
可以将其简单地重写为str.substring(0, str.length() - x)
。当然,原始绑定要求仍然适用。
1奇怪的是,确实明确禁止使用负的endIndex。鉴于此,感觉可以对文档进行清理,以使这两种方法共享相同的简化的前提条件文本。(此外,“ Java 7” subSequence文档中还有一个重要的错字。)String#subSequence
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句