求高手解决字符串截取的问题 374、编写一个截取字符串的函数,输入为一个字符串和字符数,输出为按字符截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是有人回复了吗?多开一个帖子?http://topic.csdn.net/u/20110821/08/f0b5c730-2613-4060-aaa3-03b96d0dc1e6.html?42655 有人问过类似的问题http://topic.csdn.net/u/20110821/08/bed95274-215e-44d8-949e-8617c27a5925.htmlpublic String leftByteString(String src, int len) { StringBuilder buf = new StringBuilder(); int count = 0; for (char c : s.toCharArray()) { count += (c>=0x4e00 && c<=0x9fa5) ? 2 : 1; if (count > len) { return buf.toString(); } buf.append(c); } return buf.toString();} 或者判断byte的高位和低位来区分是否为一个汉字。 因为不同编码字节数不一样,可以考虑加上编码参数试试看public class Test { public static void main(String[] args) throws Throwable { System.out.println(byteString("我ABC汉DEF", 6, "UTF-8")); System.out.println(byteString("我ABC汉DEF", 6, "UTF-16")); } public static String byteString(String src, int length, String charset) throws Exception { int len = (length > src.length()) ? src.length() : length; for (int i=len; i>=0; i--) { if (src.substring(0, i).getBytes(charset).length <= length) { return src.substring(0, i); } } return src; }} 可以获取当前字符的int值,java中第一个汉子是一,小于一这个字符值的都是字母 请教关于 简单工厂的问题 ??请java神解答!!!! 关于方法重载(Overloading)的执行顺序问题?? 有关数据库的增删改操作 强制类型装换是泛型的一种应用吗 POI怎样获取WORD文档中关于字符样式的信息。 用SOCKET开发简单聊天的问题,请教各位,谢谢大家指导! java的小问题 在线等待,关于james的邮件备份. 要一个上传的SERVLET!急呀 何谓JIT技术? 为什么0.14*100的值是14.000000000000002? j2se方法的调用,get() set()的用法
多开一个帖子?
http://topic.csdn.net/u/20110821/08/f0b5c730-2613-4060-aaa3-03b96d0dc1e6.html?42655
http://topic.csdn.net/u/20110821/08/bed95274-215e-44d8-949e-8617c27a5925.htmlpublic String leftByteString(String src, int len) {
StringBuilder buf = new StringBuilder();
int count = 0;
for (char c : s.toCharArray()) {
count += (c>=0x4e00 && c<=0x9fa5) ? 2 : 1;
if (count > len) {
return buf.toString();
}
buf.append(c);
}
return buf.toString();
}
或者判断byte的高位和低位来区分是否为一个汉字。
public static void main(String[] args) throws Throwable {
System.out.println(byteString("我ABC汉DEF", 6, "UTF-8"));
System.out.println(byteString("我ABC汉DEF", 6, "UTF-16"));
} public static String byteString(String src, int length, String charset) throws Exception {
int len = (length > src.length()) ? src.length() : length;
for (int i=len; i>=0; i--) {
if (src.substring(0, i).getBytes(charset).length <= length) {
return src.substring(0, i);
}
}
return src;
}
}