java 中, 如何判断一个字符串中是否是汉字? 导给银行文件要求用txt文件, 每个字段都要宽度限制, 但导出后发现因为中文的问题,数据层次不齐.该如何解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ASCII码0-126的打印字符为单字节,此外的打印字符多为两字节(三字节的不太用)。String s="asdf你好qwer";int size=0;for(int i=0;i<s.lenght;i++){size++;int ii=(int)s.charAt(i);if(ii<=0||ii>=126) size++;//双字节字符}System.out.println("字符宽度为:"+size);如果不需要处理\r\n\t...的话,31-126就可以了。 这个方法改一下就行了/** * 计算字符串长度. 一个汉字的长度按2计算. 如果给定的字符串为null, 返回0. * * @param str * 待计算长度的字符串 * @return 字符串长度 */ public static int strlen(String str) { if (str == null || str.length() <= 0) { return 0; } int len = 0; char c; for (int i = str.length() - 1; i >= 0; i--) { c = str.charAt(i); if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { //字母, 数字 len++; } else { if (Character.isLetter(c)) { //中文 len += 2; } else { //符号或控制字符 len++; } } } return len; } 汉字在 Unicode 里面有单独的几块区域,是中日韩(朝鲜)共享的。以下两段U+4e00 ~ U+9FB0 原来 GB2312 和 GBK 中的汉字U+3400 ~ U+4DB6 包括 GB18030.2000 中那些增加的汉字是否可以逐个判断?! 本地播放器如何播放服务器文件 关于匿名内部类的一个小疑惑 谁知到 StringReader这个类的作用啊? 计算年龄 简单数组问题 各位大哥:电源问题?分不够再加要多少有多少啊! 一个简单的正则表达式有问题??? 大虾们来指教 几道程序设计题目(JAVA)求大神指点 applet的安全问题。。一样的内容,为什么有的不需要安全文件? 到底true和false 是不是关键字? 两个List相比较 Java里怎么做表达式求值
String s="asdf你好qwer";
int size=0;
for(int i=0;i<s.lenght;i++){
size++;
int ii=(int)s.charAt(i);
if(ii<=0||ii>=126) size++;//双字节字符
}
System.out.println("字符宽度为:"+size);如果不需要处理\r\n\t...的话,31-126就可以了。
* 计算字符串长度. 一个汉字的长度按2计算. 如果给定的字符串为null, 返回0.
*
* @param str
* 待计算长度的字符串
* @return 字符串长度
*/
public static int strlen(String str) {
if (str == null || str.length() <= 0) {
return 0;
} int len = 0; char c;
for (int i = str.length() - 1; i >= 0; i--) {
c = str.charAt(i);
if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z')
|| (c >= 'A' && c <= 'Z')) {
//字母, 数字
len++;
} else {
if (Character.isLetter(c)) { //中文
len += 2;
} else { //符号或控制字符
len++;
}
}
} return len;
}
以下两段
U+4e00 ~ U+9FB0 原来 GB2312 和 GBK 中的汉字
U+3400 ~ U+4DB6 包括 GB18030.2000 中那些增加的汉字是否可以逐个判断?!