374、编写一个截取字符串的函数,输入为一个字符串和字符数,输出为按字符截取的字符串。
但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
解决方案 »
- 请讲解以下代码的执行过程,看不懂捏
- java.awt.*; 不是已经导入了Point类吗? 为什么不加import java.awt.Point; 程序就会编译出错呢?
- JDK输出日志
- TimerTask定时任务每天执行两次的问题
- JAVA 以月来定时 求思路
- 实在想不出来
- HQL 关于跨用户的查询
- socket通讯的小程序编译时总是报错non-static variable s1In cannot be referenced from a static context”
- 各位大侠,如何动态设置按钮或者label控件的icon属性啊!
- 如何用RMI传回ResultSet,提示说没有系列化,有什么解决方法?
- 为什么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;
}
}