2 liuqihaolema liuqihaolema 于 2014.11.19 21:55 提问

关于JAVA str.substring(int beginIndex,endIndex)的问题

我看书上说 str.substring(int beginIndex,endIndex)这个代码是从字符串某一索引位置开始截取至某一索引位置结束的子串。我的代码如下:

public class Substring {
public static void main(String[] args) {
String str="hello word";
String size=str.substring(0,3);
System.out.println(size);
}
}
这个最后输出是hel,可是我怎么觉得应该是hell?
0是h,3是l(第二个l),这样截取下来的话不是应该是hell吗

14个回答

dollyn
dollyn   Rxr 2014.11.20 10:54

这些基础函数,看 API文档说明即可:

Returns a new string that is a substring of this string. The substring begins at the specified beginIndex and extends to the character at index endIndex - 1. Thus the length of the substring is endIndex-beginIndex.

Examples:

"hamburger".substring(4, 8) returns "urge"
"smiles".substring(1, 5) returns "mile"

longyc2010
longyc2010 正解,学习了
接近 3 年之前 回复
showbo
showbo   Ds   Rxr 2014.11.20 09:45

你那本书有问题吧。第二个参数是长度,不是结束字符串下标
see this :http://blog.csdn.net/tony8829/article/details/6448582

snsn1984
snsn1984 第二个参数可以是结束字符串下标,也可以是长度。
接近 3 年之前 回复
snsn1984
snsn1984   Rxr 2014.11.20 09:53

输出hel是正确的。
这个API的介绍如下:
return a new string consisting of all code units from beginIndex until the end of the string or until endIndex - 1.
所以,这个API本来就是要返回从beginIndex到endIndex-1范围内的字符串,或者是返回从beginIndex到字符串结尾的字符串。

caozhy
caozhy   Ds   Rxr 2014.11.20 10:34

第二个参数是长度而不是结束索引。

save4me
save4me   Ds   Rxr 2014.11.20 10:03

参考 你了解Java中String的substring函数吗?
最终是返回new String(offset + beginIndex, endIndex - beginIndex, value);而offset是存储的第一位,也就是1,也就是说从第1位,取3个字符

ds_LOVE
ds_LOVE   2014.11.20 10:27

简单来说这个方法包括前面字符的下标,不包括后面字符的下标

ds_LOVE
ds_LOVE   2014.11.20 10:27

简单来说这个方法包括前面字符的下标,不包括后面字符的下标

ds_LOVE
ds_LOVE   2014.11.20 11:40

说是第二个参数是长度的,多看看api吧~~再不信去自己去试试str.(5,6)这种,看看是截取一个字符出来,还是6个字符~

q229827701
q229827701   2014.11.20 13:28

看来你没理解函数意义。
0表示,从第一位开始截取。3表示截取三个字符,当然就是hel了。(0,4)才是hell

liangmeiwei
liangmeiwei   2014.11.20 15:45

java里面的范围 一般都是包头不包尾

共14条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片