『API探索』之substring()字节字符截取两种方式及内存泄漏问题
substring()或者substr()是大部分主流语言所支持的,同时对字符串的操作是编程中最频繁的操作,当然对截取字符串也是最常用操作之一。所以今天就讨论一下subtring()。
以JAVA举例,在JAVA中我们看看系统提供的substring()有什么问题?
我们首先看看JDK中substring()的源码:
public class MySubString {public static void main(String[] args) {String s = "人在江湖,记录那些有趣的事";System.out.println(subStringByByte(s, 2, 4));System.out.println(subStringByByte(s, 2));}public static String subStringByByte(String s, int begin, int end) {if(null == s || "".equals(s))return null;if (begin < 0 || end > s.getBytes().length || end - begin < 0)return null;byte[] bs = s.getBytes();byte[] new_bs = new byte[end-begin];int index = 0;for(int i = begin; i < end; i++){new_bs[index++] = bs[i];}return new String(new_bs);}public static String subStringByByte(String s, int begin) {return subStringByByte(s, begin, s.getBytes().length);}}