估计这个题目应该不陌生,最近开发项目遇到按照字节数截取字符串的问题,由于中文跟英文单个字符长度不同故很容易出现问题,按照一贯的作风,在www.baidu.com搜索一下,果真有很多答案,结果找来找去,没发现一个满意的答案,都存在一些问题;最后结合网上的思路,自己修改并完善。代码如下:
public class SplitStr {
private String splitStr;
private int splitByte;
public SplitStr(String splitStr,int splitByte) {
this.splitByte = splitByte;
this.splitStr = splitStr;
}
public void splitStrMethod() throws Exception{
String resultStr = "";
byte[] ArrOfByte = splitStr.getBytes();
if(splitByte >= 1){
int j = 0;
for(int i = 0; i < splitByte; i++){
if(ArrOfByte[i] < 0)
j++ ;
}
if((j % 2 == 1) && (ArrOfByte[splitByte - 1] < 0)){
resultStr = new String(ArrOfByte, 0, --splitByte,"gb2312");
}else{
resultStr = new String(ArrOfByte, 0, splitByte,"gb2312");
}
System.out.println(resultStr);
}
}
public static void main(String[] args) throws Exception {
String str = "Java用途很广";
//SplitStr s = new SplitStr(str,6);//Java用
//SplitStr s = new SplitStr(str,7);//Java用
SplitStr s = new SplitStr(str,8);//Java用途
s.splitStrMethod();
}