字符串中的中文字符长度处理 我的一个程序中需要统计字符串长度,但string中把汉字作为一个字符,我需要按2个字符来计算长度,如何实现好?如:"dfs中"为5个字符 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 根据编码有关,最简单的:/** * 取得字符串的长度(按全角字符计算,如果是半角字符,则只占半个字符),取得的长度进行四舍五入。 * @param 字符串 * @return 全角长度 */ public static int lengthOfQuanJiao(String value) { if (value == null) return 0; StringBuffer buff = new StringBuffer(value); float length = 0.0f; String stmp; for (int i = 0; i < buff.length(); i++) { stmp = buff.substring(i, i + 1); try { stmp = new String(stmp.getBytes("utf8")); } catch (Exception e) { } if (stmp.getBytes().length > 1) { length += 1; } else { length += 0.5f; } } return Math.round(length); }这儿写你实际的编码,stmp = new String(stmp.getBytes("utf8"));实际应该做的话,是取bytes的unicode码,然后判断unicode是否在此范围内. 我试了stmp = new String(stmp.getBytes("GBK"));System.out.println(lengthOfQuanJiao("中国abc"));结果是4结果应为5啊. 上面错了.我试了stmp = new String(stmp.getBytes("GBK")); System.out.println(lengthOfQuanJiao("中国abc")); 结果是 4 结果应为7啊. 晕死。String str = "楼主真是伤脑筋12345."System.out.println(str.getBytes().length); public static int lengthOfQuanJiao(String value) { if (value == null) return 0; StringBuffer buff = new StringBuffer(value); int length = 0; String stmp; for (int i = 0; i < buff.length(); i++) { stmp = buff.substring(i, i + 1); try { stmp = new String(stmp.getBytes("utf8")); } catch (Exception e) { } if (stmp.getBytes().length > 1) { length += 2; } else { length += 1; } } return length; } 我没任何转换怎么就把"ABC中"的长度计算成5了,你在什么程序里搞成4的转成 utf8 每个中文字算成四个字符 用java实现打印时如何设置打印的表格大小 core Java 大家帮我看下!Java 大家看看这样的算法! 求助:问道关于字符串的题。 如何把输入流的数据转移到输入流? 超级疑难小问题,四处找遍没结果,见鬼了! 请教:java.util.Date和java.sql.Date的区别? 一个Java小问题,但是我解决不了! 问个很基础的问题。。。 我的JMF不能输出视频????怎么回事????急………… 关于helloworld的问题
/**
* 取得字符串的长度(按全角字符计算,如果是半角字符,则只占半个字符),取得的长度进行四舍五入。
* @param 字符串
* @return 全角长度
*/
public static int lengthOfQuanJiao(String value) {
if (value == null)
return 0; StringBuffer buff = new StringBuffer(value);
float length = 0.0f;
String stmp;
for (int i = 0; i < buff.length(); i++) {
stmp = buff.substring(i, i + 1); try {
stmp = new String(stmp.getBytes("utf8"));
} catch (Exception e) { }
if (stmp.getBytes().length > 1) {
length += 1;
} else {
length += 0.5f;
}
}
return Math.round(length);
}这儿写你实际的编码,
stmp = new String(stmp.getBytes("utf8"));
实际应该做的话,是取bytes的unicode码,然后判断unicode是否在此范围内.
System.out.println(lengthOfQuanJiao("中国abc"));
结果是
4
结果应为5啊.
我试了stmp = new String(stmp.getBytes("GBK"));
System.out.println(lengthOfQuanJiao("中国abc"));
结果是
4
结果应为7啊.
System.out.println(str.getBytes().length);
if (value == null)
return 0; StringBuffer buff = new StringBuffer(value);
int length = 0;
String stmp;
for (int i = 0; i < buff.length(); i++) {
stmp = buff.substring(i, i + 1); try {
stmp = new String(stmp.getBytes("utf8"));
} catch (Exception e) { }
if (stmp.getBytes().length > 1) {
length += 2;
} else {
length += 1;
}
}
return length;
}
转成 utf8 每个中文字算成四个字符