黑马程序员技术交流社区

标题: 关于对字符串的操作 [打印本页]

作者: 小路飞    时间: 2013-3-18 07:38
标题: 关于对字符串的操作
为什么在针对某一段字符串进行操作的时候都是包含头不包含尾呢?
作者: HM张超    时间: 2013-3-18 09:06
你说的substring吧在截取的时候从头开始到某个字符,然后你会发现到的那个字符不在字符串内!
因为substring的方法就是这样规定的,如你要接到最后你就字符串点length截取,
如果是部分你indexOf 就可以
作者: 赵晓东    时间: 2013-3-18 09:22
  1. /*模拟一个subString方法*/

  2. class SubStringDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 String substr = subString("abcdefgh",2,5);
  7.                 System.out.println(substr);
  8.         }

  9.         public static String subString(String str,int start,int end)
  10.         {
  11.                 String str1 = str; //接收一个字符串
  12.                 int size = end - start; //用尾值减去头值,作为数组的长度
  13.                 int num = 0;
  14.                 char[] ch = new char[size]; //创建一个字符数组,用来存储截取的字符
  15.                 char[] chr = str1.toCharArray(); //将接收的字符串转换为数组
  16.                 while (start < end) //把截取的字符写入字符数组
  17.                 {
  18.                         ch[num] = chr[start];
  19.                         num++;
  20.                         start++;
  21.                 }
  22.                 return new String(ch);//返回截取的字符串
  23.         }
  24. }

  25. //我个人是这样理解的,包含头,不包含尾,截取的字符串长度 = 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