/**
* Java中1个char类型的变量可存储任意编码的1个字符,如1个ASC码和或1个中文字符,
* 例如:含有3个ASC和含有3个汉字字符的字符串长度是一样的: "1ac".length()==3;  "你好a".length()=3;
* 但上述两个字符串所占的byte是不一样的,前者是3,后者是5(1个汉字2byte)。
* 请编写函数:
*    public static String leftStr(String source, int maxByteLen)
* 从source中取最大maxByteLen个byte的子串。
* 当最后一个byte恰好为一个汉字的前半个字节时,舍弃此byte。例如:
*    String str="我LRW爱JAVA";
*    leftStr(str,1,-1)=="";
*    leftStr(str,2,-1)=="我";
字符串截取几个字符
*    leftStr(str,4,-1)=="我LR";
*    leftStr(str,11,-1)=="我LRW";
* 当最后一个byte恰好为一个汉字的前半个字节时,补全汉字(多取一个字节)。例如:
*    String str="我LRW爱JAVA";
*    leftStr(str,1,1)=="我";
*    leftStr(str,2,1)=="我";
*    leftStr(str,4,1)=="我LR";
*    leftStr(str,11,1)=="我LRW爱";
*
* @param source 原始字符串
* @param maxByteLen 截取的字节数
* @param flag 表示处理汉字的方式。1表示遇到半个汉字时补全,-1表示遇到半个汉字时舍弃
* @return 截取后的字符串
*/
public static String leftStr(String source, int maxByteLen, int flag){
if(source == null || maxByteLen <= 0){
return "";
}
byte[] bStr = Bytes();
if(maxByteLen >= bStr.length)return source;
String cStr = new String(bStr, maxByteLen - 1, 2);
if(cStr.length() == 1 && source.indexOf(cStr)!=-1){
maxByteLen += flag;
}
return new String(bStr, 0, maxByteLen);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。