把一个长的字符串变成短的字符串,并且在每一行末尾加入 \n
/**
* 计算字符串的 ascii 码长度
*
* @param s
* @return
*/
public int strLength(String s) {
int result = 0;
for (int i = 0; i < s.length(); i++) {
if (isDoublebyteWord(s.substring(i, i + 1))) {
result += 2;
} else {
result += 1;
}
}
return result;
}
/**
* 判断是否双字节字符
*
* @param str
* @return
*/
public boolean isDoublebyteWord(String str) {
System.out.println(str);
byte[] b;
int temp;
for (int i = 0; i < str.length(); i++) {
b = str.substring(i, i + 1).getBytes();
temp = b[0];
if (temp > 0) {
return false;
}
}
return true;
}
/**
* 公割字符串
* @param s 字符串
* @param len 一小段的长度
* @return
*/
public static String changeString(String s, int len) {
LongStringToShort lts=new LongStringToShort();
String result = "";
len = (int) len / 8;
int totalLen = lts.strLength(s);
// 错误调用
if (s.length() < 1 || len < 1)
return "";
// 只有一小段,不分割
if (totalLen < len)
return s;
// 计算该字符串应该分几段
int num = (int) totalLen / len;
if (((float) totalLen / len) > num)
num++;
System.out.println("应该分" + num + "段" + len);
int sl = 0;
for (int i = 0; i < s.length(); i++) {
String temp = s.substring(i, i + 1);
if (lts.isDoublebyteWord(temp)) {
sl += 2;
} else {
sl += 1;
}
result += temp;
if (sl > (len - 1)) {
System.out.println("hello");
sl = 0;
result += "\n";
continue;
}
}
return result;
}
posted on 2008-05-04 15:41
jiang 阅读(2159)
评论(0) 编辑 收藏 所属分类:
java