Sli*_*ght 19 java string substring
可以将否定的一个用作Java中string.substring的结束索引吗?
例:
String str = "test";
str.substring(0, str.indexOf("q"));
Run Code Online (Sandbox Code Playgroud)
编辑:在javadocs中没有任何地方直接说endindex不能为负.在其他语言和库中存在子串的实现,其允许负的endindex但是不允许负的beginindex,因此这显然是相关的.它也没有任何暗示.(编辑:好吧,这是松散的暗示,但我显然其他人亲自问我这个问题仍然发现它很不清楚.这是一个简单的Q + A,我提供的不是我实际上试图找到答案这个微不足道的问题)
use*_*740 38
不.负指数不会允许的.
From String #substring(int beginIndex,int endIndex):
抛出:IndexOutOfBoundsException - 如果beginIndex为负数,或者endIndex大于此String对象的长度,或者beginIndex大于endIndex.
虽然文档没有直接声明endIndex不能为负1,但这可以导出.重写相关要求会产生以下事实:
beginIndex >= 0endIndex >= beginIndex因此,要求endIndex >= beginIndex >= 0哪个endIndex 不能为负.
无论如何,假设我们对负端指数的含义有相同的想法,str.substring(0, -x)可以简单地重写str.substring(0, str.length() - x).当然,原始约束要求仍然适用.
1奇怪的是,没有明确禁止负endIndex的.鉴于此,我们认为可以清理文档,使两种方法共享相同的简化前提条件文本.(作为奖励:"Java 7"子序列文档中也有一个重要的拼写错误.)String#subSequence
不,使用负数作为子字符串的结束索引以及大于字符串长度的数字将导致 StringIndexOutOfBoundsException。
(你不会相信在网上找到一个直接的答案是多么困难)
| 归档时间: |
|
| 查看次数: |
21625 次 |
| 最近记录: |