黑马程序员技术交流社区
标题:
自己写StringBuffer删除功能!
[打印本页]
作者:
陈鹏No1
时间:
2015-10-18 17:14
标题:
自己写StringBuffer删除功能!
本帖最后由 陈鹏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
删除全部
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2