黑马程序员技术交流社区
标题:
关于对字符串的操作
[打印本页]
作者:
小路飞
时间:
2013-3-18 07:38
标题:
关于对字符串的操作
为什么在针对某一段字符串进行操作的时候都是包含头不包含尾呢?
作者:
HM张超
时间:
2013-3-18 09:06
你说的substring吧在截取的时候从头开始到某个字符,然后你会发现到的那个字符不在字符串内!
因为substring的方法就是这样规定的,如你要接到最后你就字符串点length截取,
如果是部分你indexOf 就可以
作者:
赵晓东
时间:
2013-3-18 09:22
/*模拟一个subString方法*/
class SubStringDemo
{
public static void main(String[] args)
{
String substr = subString("abcdefgh",2,5);
System.out.println(substr);
}
public static String subString(String str,int start,int end)
{
String str1 = str; //接收一个字符串
int size = end - start; //用尾值减去头值,作为数组的长度
int num = 0;
char[] ch = new char[size]; //创建一个字符数组,用来存储截取的字符
char[] chr = str1.toCharArray(); //将接收的字符串转换为数组
while (start < end) //把截取的字符写入字符数组
{
ch[num] = chr[start];
num++;
start++;
}
return new String(ch);//返回截取的字符串
}
}
//我个人是这样理解的,包含头,不包含尾,截取的字符串长度 = end - start;
复制代码
作者:
VOIDMAIN
时间:
2013-3-18 11:11
给你一个参考://截取小数点后两位的数据
double a=786453.9553;
String b=Double.toString(a); //首先将带小数点的double数据转换成String型,
String t=b.substring(0,b.indexOf(".")+3 ); //然后获取小数点在字符串中第一次出现的索引值,然后以此位置的下一位为开始,增加两位结束,使用substring()方法
作者:
黄玉昆
时间:
2013-3-18 12:38
一般来说,这是java中的一种规定,都默认是包含头,不包含尾,以后在开发的时候,最好也要这样做。
作者:
王军行
时间:
2013-3-18 13:52
这是java中的一种规定,都默认是包含头,不包含尾,以后在开发的时候,最好也要这样做。
我的理解是为了和角标对应,角标从0开始,长度从1开始,前边的值可以理解为角标,后边可以理解为长度。
角标就是长度-1,取值是按角标取的,就形成了包含头不包含尾。
作者:
李尧
时间:
2013-3-18 16:33
楼上已经说得很清楚了,就是这么规定的.你要问为什么这么规定,那只有java初始开发人员才知道.
但是不赞同楼上的说法,substring(beginIndex, endIndex) endIndex最好不要理解为长度,
例如 String str="abcd"; 我要截取"bc" subs=str.subString(1,3);你如果把3理解为长度,那就麻烦大了.
另,友情提示.
这个构造方法 String(byte[] arr,int start,int length);
第三个参数length 表示的是new 的String的长度,而不是byte[]的结束角标.我之前总是跟subString() 搞混.希望对你有帮助.
作者:
小路飞
时间:
2013-3-19 07:36
感谢各位的解惑!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2