当前位置 : 主页 > 编程语言 > 其它开发 >

统计输入字符串中汉字的个数

来源:互联网 收集:自由互联 发布时间:2022-05-30
统计输入字符串中汉字的个数 /*统计输入字符串中汉字的个数*难点:汉字的存储表示,GB2312-80标准中,前面15区是图形符号(全角字符,每个字符占2个字节)*而半角状态的字符,属于AS
统计输入字符串中汉字的个数
	/*统计输入字符串中汉字的个数
	*难点:汉字的存储表示,GB2312-80标准中,前面15区是图形符号(全角字符,每个字符占2个字节)
	*		而半角状态的字符,属于ASCII码,每个字符占一个字节
	*第16区第01位(0xB0A1)开始到87区第94位(0xF7FE)都是汉字(其他的不是)
	* 
	*/
	unsigned char input[81];//存储待处理的字符串
	printf("请输入待统计的字符串:");
	printf("%d\n", strlen((char*)input));
	int total_chars = 0;    //总字符数
	int chinese_count = 0;	//汉字个数
	int index = 0;			//指向数组当前元素的下标

	for (index = 0; index < strlen((char*)input); ++index)//strlen计算含有汉字的时候,把汉字字符算作2个字符
	{
		if ((input[index] >= 0xB0) && (input[index + 1] >= 0xA1)
			 &&(input[index] <= 0xF7) && (input[index + 1] <= 0xFE))	//如果在这个范围内的,就是汉字
		{
			chinese_count++;
			index++;
		}
		else
		{
			if (input[index] >= 0x80)//如果最高位为1,不是汉字,可能为全角字符也占2个字节
			{
				index++;
			}
		}

	}
	printf("%s中有汉字%d个!\n", input,chinese_count);
在java中实现
/*
*统计输入字符串中汉字的个数
*注意:Java中的字符(含汉字)均采用Unicode编码,而不是内码和ASACII码
*在Unicode中,汉字编码的存储表示范围为[\u4E00,\u9FA5]
*/
import java.util.Scanner;

public class HZCount
{
    public static void main(String[] args)
    {
        int chinese_chars = 0;
        
        Scanner sc = new Scanner(System.in);
        
        System.out.print("请输入待统计的字符串:");
        String input = sc.nextLine();	//输入的字符串中可以含有空格符
        for(int index = 0;index < input.length();index++)
        {
            if((input.charAt(index) >= 0x4E00) && (input.charAt(index) <= 0x9FA5))
            {
                chinese_chars++;	//汉字个数加1
			}
		}
        System.out.println(input + "中有" + chinese_chars + "个汉字!");
	}
}



上一篇:扒一扒GES如何赋能互联网电商风控
下一篇:没有了
网友评论