有一列字符串,如String s=“说sg收a”有7个字节,中文占二个字节。
将该列字符按每行有相应的字符输出,如果某一行的最后的一个字符的中文被拆开,则将其放在下一行输出。
如:String s="收sds到sfq都是sk是";按每行6个字符输出的话:则结果为:
第一行为:收sds
第二行为:到sfq
第三行为:都是sk
第四行为:是
将该列字符按每行有相应的字符输出,如果某一行的最后的一个字符的中文被拆开,则将其放在下一行输出。
如:String s="收sds到sfq都是sk是";按每行6个字符输出的话:则结果为:
第一行为:收sds
第二行为:到sfq
第三行为:都是sk
第四行为:是
解决方案 »
- eclipse怎么导入ant项目?
- 处理大量的二进制数据,大家伙们有没有好提议?
- JAVA中方法覆盖!谢谢
- 初学JAVA 文件名过滤器接口问题
- jdk1.5泛型的疑惑
- 高分求nio方面的例子,想做个即时通讯通讯软件。
- javac 不是内部命令或外部命令,也不是课运行的程序?请帮忙解决一下,在线!
- 急,,高分请教如何在Applet中旋转文字成180度
- jdk中的类放在什么目录下?
- Frame里有两个Panel,可以实现单独对每个Panel加键盘监听,对整个Frame监听不了,为什么?
- java 字符串数组比较 运行时报错,百思不得其解,nb的人来帮帮吧,谢谢了~~~!!!(第一次在csdn提问,别让我失望哦)
- BorderLayout中遇到组件的大小问题
public void outputString(String str,int i){
int count=0;
StringBuffer sb=new StringBuffer("");
char[] c=str.toCharArray();
if(i==0){
System.out.println(str);
}
if(i==1&&c[0]>255){
System.out.println("第一个字符是汉字,无法分割");
System.exit(0);
}
else{
for(int j=0;j<i;j++){
if(c[j]>255&&(i-count)>1){
count=count+2;
sb.append(c[j]);
}
else if(c[j]<255&&(i-count)>0){
count=count+1;
sb.append(c[j]);
}
else break;
}
}
System.out.println(sb);
int index=sb.length();
outputString(str.substring(index), i);
}
public static void main(String[] args){
TestString ts=new TestString();
ts.outputString("收sds到sfq都是sk是",6);
}
}
String s = "收sds到sfq都是sk是";
Pattern p = Pattern.compile("([\\u4e00-\\u9fa5]+[\\w]*)");
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group());
}
public int getTotalByte(char[] c) {
int totalBytes = 0;
for (int i = 0; i < c.length; i++) {
if (c[i] > 255) {
totalBytes = totalBytes + 2;
}
if (c[i] < 255) {
totalBytes = totalBytes + 1;
}
}
return totalBytes;
} public void outputString(String str, int i) {
int count = 0;
StringBuffer sb = new StringBuffer();
char[] c = str.toCharArray();
int totalbytes = getTotalByte(c);
if (i <= totalbytes) {
for (int j = 0; j < i; j++) {
if (c[j] > 255 && (i - count) > 1) {
count = count + 2;
sb.append(c[j]);
} else if (c[j] < 255 && (i - count) > 0) {
count = count + 1;
sb.append(c[j]);
} else
break;
}
System.out.println(sb);
int index = sb.length();
outputString(str.substring(index), i);
}
if(i>totalbytes){ //避免数组越界的判断
System.out.println(str);
}
} public static void main(String[] args) {
TestString ts = new TestString();
ts.outputString("收sds到sfq都是sk是", 6);
System.out.println("-------------------------------");
ts.outputString("收sds到sfq都是sk是", 5);
System.out.println("-------------------------------");
ts.outputString("收sds到sfq都是sk是", 7);
}
}