java根据需截取的字节数来截取字符串的两种方法

public String cutUtf8StringByByteNum(String content, int byteNum) {
if(StringUtils.isEmpty(content)){
return null;
}
byte bt[] = content.getBytes();
if(bt.length>=byteNum){
if(byteNum>2){
if (bt[byteNum-1] < 0) {
if(bt[byteNum-2]>=0){
content = new String(bt, 0, byteNum-1);
}else{
if(bt[byteNum-3]<0){
content = new String(bt, 0, byteNum);
}else{
content = new String(bt, 0, byteNum-2);
}
}
}else{
content = new String(bt, 0, byteNum);
}
}else if(byteNum==2){
if(bt[byteNum-1]<0){
if(bt[byteNum-2]<0){
content=null;
}else{
content = new String(bt, 0, byteNum-1);
}
}else{
content = new String(bt, 0, byteNum);
}
}else if(byteNum==1){
if(bt[byteNum-1]<0){
content=null;
}else{
content = new String(bt, 0, byteNum);
}
}else{
content = null;
}
}
return content;
}

public String cutContentByByteNum(String content, int byteNum){
if (StringUtils.isEmpty(content)) {
return "";
}
int contentByteNum=content.getBytes(Charset.defaultCharset()).length;
StringBuffer resultContent = new StringBuffer();
if(contentByteNum > byteNum){
char itemContent[] = content.toCharArray();
for(int i = 0 ;i < itemContent.length; i++){
if((resultContent.toString().getBytes(Charset.defaultCharset()).length + String.valueOf(itemContent[i]).getBytes(Charset.defaultCharset()).length) <= byteNum - 3){
resultContent.append(itemContent[i]);
}else{
resultContent.append("...");
break;
}
}
}else{
resultContent.append(content);
}
return resultContent.toString();
}

相关文档
最新文档