2013-12-12 40 views
3

对不起,如果这是一个愚蠢的问题,但我找不到解释。为什么在String.trim()上引发抛出异常?

我有一个字符串是这样的:

String str ="This is 50 test. Try it !!"; 

我只想test之前得到的数字。

如果我做的:

str = str.substring(0, str.indexOf("test")).trim(); 
str = str.substring(str.lastIndexOf(" ")).trim(); 
System.out.println(str); 

我得到:"50"

但是,如果我这样做:

str = str.substring(0, str.indexOf("test")).trim().substring(str.lastIndexOf(" ")).trim(); 

我得到:Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -13

由于trim()回报的副本字符串,前导和尾随省略空白,为什么抛出这个异常?为什么我不能将我的方法调用连接str?我无法理解。

回答

12
str = str.substring(0, str.indexOf("test")).trim().substring(str.lastIndexOf(" ")).trim(); 
                  ^

str字符串。


str = str.substring(0, str.indexOf("test")).trim(); // first operation 
str = str.substring(str.lastIndexOf(" ")).trim(); 
        ^

str参照字符串被施加所述第一操作之后。因此,这两种方法并不等同。

+1

啊,谢谢。得到它了 ! – user2336315

相关问题