我有这个字符串:得到一个字符
String code="abc";
我想substring
方法提取的“C”从这个字符串,但它不工作:
String code="abc";
String getsmscode=code.substring(2,1);
此代码返回一个错误
java.lang.StringIndexOutOfBoundsException: length=3; regionStart=2; regionLength=-1
但我不知道为什么?
我有这个字符串:得到一个字符
String code="abc";
我想substring
方法提取的“C”从这个字符串,但它不工作:
String code="abc";
String getsmscode=code.substring(2,1);
此代码返回一个错误
java.lang.StringIndexOutOfBoundsException: length=3; regionStart=2; regionLength=-1
但我不知道为什么?
您需要阅读the documentation for substring - 第二个参数是不是一个长度,它的结束索引(不包括)。
参数:
beginIndex
- 开始索引(包括)。
endIndex
- 结束索引,独占。
如果有疑问,阅读文档...
还要注意的是,如果你只是想获得最后一个字符,你可以只使用单参数过载,从返回一个字符串给定起点到字符串的结尾:
String lastCharacter = text.substring(text.length() - 1);
或者你可以把它作为一个单一的字符:
char lastCharacter = text.charAt(text.length() - 1);
第二个参数不是长度,它是an end index。
String#substring(int beginIndex, int endIndex)
的从0开始的索引,您可以尝试
String code="abc";
String getsmscode=code.substring(2);
这不会提取最后一个字符。 OP刚刚误解了第二个参数。 – 2013-03-13 15:34:21
我觉得子需要开始索引或开始索引和结束索引作为参数:
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
你给它一个开始指数大于而不是结束指数,因此它会变得混乱,因为返回的长度是负值。交换1和2。
交换1和2将返回b。结束索引字符被排除。 – 2013-03-13 15:37:37
是的。我更加反应了人们缺乏对功能预期的参数的理解,而不是提供一个确切的解决方案。道歉,下次我会遵守规则。 – 2013-03-13 19:06:31
使用也可以达到这个效果。
String getsmscode = code.substring(2,3);
方法描述
public String substring (int start, int end)
返回包含的字符从该字符串的子序列的字符串。返回的字符串共享此字符串的后备数组。
参数
开始 - 偏移量的第一个字符。
end-最后一个字符后面的偏移量。
返回包含字符从开始到结束的新字符串 - 1
抛出
以上家伙已经充分回答了你的问题,但只是在阅读API的一些技巧。
方法通常以public一词开始,然后包含返回类型......这是什么类型的数据将被返回。如果预计没有任何回报是无效的。
然后出现方法的名称和两个括号。
括号之间是它接受的参数类型。
这个特殊的方法它接受两个整数。这些帮助保持一个索引,你想保持多少字符串
索引是一个重要的概念,要理解,很难描述它是如何工作的话,但看在api描述列表帮助中的例子帮助。
index-1通常意味着从0开始计数,所以在字符串“Hello World”中,H的索引为0,d的索引为10.注意,只有9个字母,但我们仍然必须包含空格作为字符,因此它是索引在这种情况下是5.
重要的是要注意api提及排除和包括在参数说明中。这只是表示返回的字符串将包含由第一个参数索引的字母,但不包括由第二个参数索引的字母。
如果你需要做的就是提取一个字符串,最后一个字母无论字符串大小了多久,一个简单的解决方案是
stringName.substring(stringName.length()-1);
感谢你的完美单词......谢谢。我解决了我的问题 – Fcoder 2013-03-13 18:41:37
当然,你是第一个) – bsiamionau 2013-03-13 15:33:02
@乔恩飞碟双向!但是当我这样做:substring(2,1);我没有得到任何东西! – Fcoder 2013-03-13 15:33:15
@FarhadShirzad:不,你会得到一个异常......如果你使用'substring(2,3)',你会得到最后一个字符。 – 2013-03-13 15:33:37