Topic: 请问如何计算一段文字里面包含多少个中文字符?

  Print this page

1.请问如何计算一段文字里面包含多少个中文字符? Copy to clipboard
Posted by: surroad
Posted on: 2006-07-16 14:39

请问如何计算一段文字里面包含多少个中文字符?谢谢

2.Re:请问如何计算一段文字里面包含多少个中文字符? [Re: surroad] Copy to clipboard
Posted by: myohmy
Posted on: 2006-07-16 18:15

除了中文还有什么?

3.Re:请问如何计算一段文字里面包含多少个中文字符? [Re: surroad] Copy to clipboard
Posted by: 开心傻瓜
Posted on: 2006-07-16 22:01

有这样一个思路,你可以考虑一下,用一个for循环,在这循环块里定义一个计数器变量,例如这样:
int [] aa = new int(1,2,3,4,);
int count = o;
for(int i =0;i <= aa.length-1;i++)
{
count++;
}

4.Re:请问如何计算一段文字里面包含多少个中文字符? [Re: surroad] Copy to clipboard
Posted by: cxp108
Posted on: 2006-07-17 08:35


String s = "计算字符";
System.out.println("字符长度是"+s.length());

这样就可以了

5.Re:请问如何计算一段文字里面包含多少个中文字符? [Re: surroad] Copy to clipboard
Posted by: myohmy
Posted on: 2006-07-17 20:06

他不会是问个这么简单的问题吧

是不是想计算有中文英文数字或者是别的什么,夹杂在一起的字符串中的中文字符个数啊

6.Re:请问如何计算一段文字里面包含多少个中文字符? [Re: surroad] Copy to clipboard
Posted by: ynwso
Posted on: 2006-07-19 13:32

是不是在一个文件里,要读取文件

7.Re:请问如何计算一段文字里面包含多少个中文字符? [Re: surroad] Copy to clipboard
Posted by: cxp108
Posted on: 2006-07-20 11:44

.....晕,我理解错了......
这个问题值得关注,替搂主顶一下

8.Re:请问如何计算一段文字里面包含多少个中文字符? [Re: cxp108] Copy to clipboard
Posted by: 独孤酒间
Posted on: 2006-07-21 10:18

判断ascii码 如果是小于0的 也就是负数 都是全角字符(包括中文)要是想判断中文 那就查下资料吧

9.Re:请问如何计算一段文字里面包含多少个中文字符? [Re: surroad] Copy to clipboard
Posted by: ratking
Posted on: 2006-07-21 10:38

/*
* TestGbk.java
*
* Copyleft (C) 2006 RatKing. All wrongs reserved.
*/

import java.io.UnsupportedEncodingException;

/**
* 测试GBK汉字.
*
* 用法举例:
* java TestGbk "我是谁?Who am I?"
*
* @author <a href="mailto:ratking@ynet·com">RatKing</a>
* @version 1.0 (build 20060721)
*
* @see <a href="http://www.haiyan.com/steelk/navigator/ref/gbk/gbindex.htm">《GBK 汉字内码扩展规范》</a>
*/
public class TestGbk {
/** GBK编码高字节最小值 */
public static final int GBK_HIGH_MIN = 0x81;
/** GBK编码高字节最大值 */
public static final int GBK_HIGH_MAX = 0xFE;
/** GBK编码低字节最小值 */
public static final int GBK_LOW_MIN = 0x40;
/** GBK编码低字节最大值 */
public static final int GBK_LOW_MAX = 0xFE;
/** GBK编码低字节例外值 */
public static final int GBK_LOW_EXCEPTION = 0x7F;

public static void main(String[] args) {
String str = null;
if (args == null || args.length == 0) {
str = "Hello, world!世界,你好!";
} else if (args.length != 1
|| (args.length == 1
&& (args[0].equals("/?")
|| args[0].equals("-h")
|| args[0].equals("-help")
|| args[0].equals("--help")))) {
System.err.println("用法:java TestGbk [字符串]");
System.exit(1);
} else {
str = args[0];
}

int gbkCount = 0;
int asciiCount = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
boolean isGbk = isGbk(c);
System.out.println(i + ":[" + c + "] " + isGbk);
if (isGbk) {
gbkCount++;
} else {
asciiCount++;
}
}
System.out.println("字符串:\"" + str + "\"");
System.out.println("GBK汉字(含全角标点符号)数:" + gbkCount);
System.out.println("非GBK汉字数:" + asciiCount);
System.out.println("字符串总字符数:" + str.length());
System.out.println("字符串总字节数:" + (gbkCount * 2 + asciiCount));
}

/**
* 是否为GBK内码的字符.
* 对英文字母、阿拉伯数字、半角标点符号,返回false;
* 对中文汉字、全角标点符号,返回true。
* @param c 待检测的字符
* @return 是否为GBK内码的字符
*/
public static boolean isGbk(char c) {
String str = String.valueOf(c);
byte[] b = null;
try {
b = str.getBytes("GBK");
} catch (UnsupportedEncodingException uee) {
throw new IllegalStateException("内部错误:本计算机的Java环境不支持GBK编码: "
+ uee.getMessage());
}
if (b.length == 2) {
int ch0 = b[0]; // 高位字节
int ch1 = b[1]; // 低位字节
if (ch0 < 0) {
ch0 += 256;
}
if (ch1 < 0) {
ch1 += 256;
}
if (ch0 >= GBK_HIGH_MIN && ch0 <= GBK_HIGH_MAX
&& ch1 >= GBK_LOW_MIN && ch1 <= GBK_LOW_MAX
&& ch1 != GBK_LOW_EXCEPTION) {
return true;
}
}

return false;
}
}



TestGbk.java (3.19k)


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923