如何计算输入字符串中汉字的数量?

2026-05-17 09:531阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计465个文字,预计阅读时间需要2分钟。

统计输入字符串中汉字的个数。难点:汉字的存储表示,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 + "个汉字!"); } }

本文共计465个文字,预计阅读时间需要2分钟。

统计输入字符串中汉字的个数。难点:汉字的存储表示,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 + "个汉字!"); } }