黑马程序员技术交流社区

标题: 自己写StringBuffer删除功能! [打印本页]

作者: 陈鹏No1    时间: 2015-10-18 17:14
标题: 自己写StringBuffer删除功能!
本帖最后由 陈鹏No1 于 2015-11-8 19:13 编辑
  1. public class DeleteStringBuffer {
  2.         public static void main(String[] args) {
  3.                
  4.                 StringBuffer sb = new StringBuffer();
  5.                
  6.                 sb.append("yaominghuitoulan");
  7.                 System.out.println("原字符串:"+sb);
  8.                 //调用删除功能
  9.                 sb = delete(sb,7, 10);
  10.                
  11.                 System.out.println("删除指定长度:"+sb);
  12.                
  13.                 sb = delete(sb);
  14.                 System.out.println("删除全部:"+sb);
  15.         }
  16.         
  17.         //删除StringBuffer中指定长度字符序列
  18.         public static StringBuffer delete(StringBuffer buffer,int start,int end) {        
  19.                 //先把StringBuffer里的字符串转成字符数组
  20.                 char[] chs = buffer.toString().toCharArray();
  21.                
  22.                 //获得数组中共有多少个字符,也就是字符串的长度
  23.                 int count = chs.length;
  24.                
  25.                
  26.                 //如果是不符合的数据
  27.                 if(start < 0)
  28.                         throw new ArrayIndexOutOfBoundsException(start);
  29.                 if(start > end)
  30.                         throw new ArrayIndexOutOfBoundsException();
  31.                 if(end > count)
  32.                         end = count;
  33.                
  34.                 //要删除部分的字符个数
  35.                 int len = end - start;
  36.                
  37.                 if(len > 0) {
  38.                         //使用System类的arraycopy()方法将chs数组中要删除的部分,通过end后面部分的字符覆盖掉
  39.                         System.arraycopy(chs, start+len, chs, start, count-end);
  40.                         
  41.                         //覆盖掉后,新的字符序列长度变化
  42.                         count -= len;
  43.                 }
  44.                
  45.                 //得到的新数组的长度还和原来的数组的长度一样
  46.                 //再new个新的字符数组,长度为count,把需要的部分的字符放进这个新的数组
  47.                 char[] chsNew = new char[count];
  48.                 System.arraycopy(chs, 0, chsNew, 0, count);
  49.                
  50.                 //把字符数组转换成StringBuffer里的字符串,返回
  51.                 return new StringBuffer(new String(chsNew));
  52.         }
  53.         
  54.         //删除整个StringBuffer里的字符串
  55.         public static StringBuffer delete(StringBuffer buffer) {
  56.                 return delete(buffer,0,buffer.length());
  57.         }
  58. }
  59. 运行结果
  60. 原字符串:yaominghuitoulan
  61. 删除指定长度:yaomingtoulan
  62. 删除全部
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2