使用ireport做报表的时候,遇到既有汉字又有字母,及特殊符号的字符串,有时候不自动换行的问题,直接 后台对传回报表的数据进行换行处理。我用的ireport版本为:3.7.0
/**
* 字符串换行
* @param str
* @param num 第几个字节换行
* @return
*/
public static String getWrapString(String str, int size){
int hzCount = 0;//汉字的个数
int ywCount = 0;//字母节数
String result = "";
try {
if(str.getBytes("GBK").length<size){
return str;
}
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
char[] cStr = str.toCharArray();
for(int i = 0 ; i < cStr.length;i++){
try {
if((cStr[i]+"").getBytes("GBK").length == 2){
hzCount ++ ;
}else if((cStr[i]+"").getBytes("GBK").length == 1){
ywCount++;
}
result = result + cStr[i];
if((hzCount*2 + ywCount) % size == 0){
result = result + "\n";
}else if((hzCount*2 + ywCount) % size == 1){
if((cStr[i]+"").getBytes("GBK").length == 2){
result = result + "\n";
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return result;
}