String ="阿斯顿a发就adfasdf1阿迪发生01123撒地方飞洒发";排版
一行只能排10个字节,最后一个是汉字如果排不下则另起一行排列。 我所知道的是根据String按每个字符分成String[],然后数字每个字符String.getBytes("GBK").leng相加(汉字2个字节,数字,字母一个字节),那后能相加到10就另起一行,如过到11则把此字符另起一行排版。问题数据量很大,排起来相率不高,而且也麻烦。
有什么简洁的方法??效果图:
0123456789012345678901234567890 --格式序列
阿斯f顿发
就adfdasdf
阿迪f发生0
123撒地方
飞f洒发
一行只能排10个字节,最后一个是汉字如果排不下则另起一行排列。 我所知道的是根据String按每个字符分成String[],然后数字每个字符String.getBytes("GBK").leng相加(汉字2个字节,数字,字母一个字节),那后能相加到10就另起一行,如过到11则把此字符另起一行排版。问题数据量很大,排起来相率不高,而且也麻烦。
有什么简洁的方法??效果图:
0123456789012345678901234567890 --格式序列
阿斯f顿发
就adfdasdf
阿迪f发生0
123撒地方
飞f洒发
解决方案 »
- JavaMail 内存溢出,如何解决!!
- ssh怎么知道删除实体成不成功?
- 各位,j2EE有没有什么基于SOA的快速开发平台
- 用hibernate查询有参数时发生错误,没有时正常
- struts2 跳转问题
- JSF Error Traced[line: 1] The markup in the document preceding the root element
- 关于struts2使用pager-taglib的问题 请高手指教 恳求
- 如何在页面上查看上传到weblogic的文件?
- 一个 href(链接) 语句跟我过不去!!! 大家来帮忙!!!!
- 日志量比较大 大概有10台记录日志的服务器 如何用log4j每小时每台日志服务器生成一个日志文件
- 帮个j2ee方面的调查
- 把Bean集合变成Json字符串
如果在页面上,可以考虑下排版插件:FCKEditor...
如果在文本上,好像还没有简洁的方法,只能通过程序来控制了
生成txt文本
String s ="阿斯顿a发就adfasdf1阿迪f发生0123撒地方飞f洒发";
int len=s.length();
int count=0;
int pre=0;
for(int i=0;i<len;i++){
char c=s.charAt(i);
int cw=1;
if(c>=0x80){
cw=2;
}
if(count+cw>10){
System.out.println(s.substring(pre,i));
pre=i;
i--;
count=0;
continue;
}
count+=cw;
}
if(pre<len){
System.out.println(s.substring(pre));
}
查了下网上的 一个汉字 getBytes("GBK")=2个字节,这2个字节都是负数的吗,是负数的都是汉字吗?
2)c>=0x80 不一定是汉字,但在GBK编码中得占2字节
{
byte[] bytes = str.getBytes("GBK");
int num=0;
for(int i=0;i<bytes.length;){
if(bytes[i]<0){
num+=2;
i+=2;
}else{
num++;
i++;
}
if(num >= limitLen)
break;
}
if(num > limitLen){
num-=2;
}
String sub = new String(bytes,0,num,"GBK");
list.add(sub);
if(str.length()>sub.length())
getSubString3(str.substring(sub.length()), limitLen,list);
return new String(bytes,0,num,"GBK");
}
这里的确是判断是否是小于0.小于的话就是汉字,我也试了下,结果也正确。
你这里比较的是byte,不是char, byte是有符号的, 汉字的GBK编码高位为1, 也就是负数了例外,这个方法下面这两个地方会导致效率比较低
1)str.getBytes("GBK");
2)String sub = new String(bytes,0,num,"GBK");
cw=2;
}
或者
if(bytes[i]<0){
num+=2;
i+=2;
}else{
num++;
i++;
}
这2个方法判断都正确吗,对于汉字、英文、数字、符号