本帖最后由 陈鹏No1 于 2015-11-8 19:13 编辑
- public class DeleteStringBuffer {
- public static void main(String[] args) {
-
- StringBuffer sb = new StringBuffer();
-
- sb.append("yaominghuitoulan");
- System.out.println("原字符串:"+sb);
- //调用删除功能
- sb = delete(sb,7, 10);
-
- System.out.println("删除指定长度:"+sb);
-
- sb = delete(sb);
- System.out.println("删除全部:"+sb);
- }
-
- //删除StringBuffer中指定长度字符序列
- public static StringBuffer delete(StringBuffer buffer,int start,int end) {
- //先把StringBuffer里的字符串转成字符数组
- char[] chs = buffer.toString().toCharArray();
-
- //获得数组中共有多少个字符,也就是字符串的长度
- int count = chs.length;
-
-
- //如果是不符合的数据
- if(start < 0)
- throw new ArrayIndexOutOfBoundsException(start);
- if(start > end)
- throw new ArrayIndexOutOfBoundsException();
- if(end > count)
- end = count;
-
- //要删除部分的字符个数
- int len = end - start;
-
- if(len > 0) {
- //使用System类的arraycopy()方法将chs数组中要删除的部分,通过end后面部分的字符覆盖掉
- System.arraycopy(chs, start+len, chs, start, count-end);
-
- //覆盖掉后,新的字符序列长度变化
- count -= len;
- }
-
- //得到的新数组的长度还和原来的数组的长度一样
- //再new个新的字符数组,长度为count,把需要的部分的字符放进这个新的数组
- char[] chsNew = new char[count];
- System.arraycopy(chs, 0, chsNew, 0, count);
-
- //把字符数组转换成StringBuffer里的字符串,返回
- return new StringBuffer(new String(chsNew));
- }
-
- //删除整个StringBuffer里的字符串
- public static StringBuffer delete(StringBuffer buffer) {
- return delete(buffer,0,buffer.length());
- }
- }
- 运行结果
- 原字符串:yaominghuitoulan
- 删除指定长度:yaomingtoulan
- 删除全部
复制代码 |
|