JAVA 统计字符串中中文,英文,数字,空格的个数
面试题:输入一行字符,分别统计出其中英文字母、中文字符、空格、数字和其它字符的个数
可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或'A'~'Z'等,Java判断一个字符串是否有中文是利用Unicode编码来判断,因为中文的编码区间为:0x4e00--0x9fbb, 但通用区间来判断中文也不非常精确,因为有些中文的标点符号利用区间判断会得到错误的结果。所以通过Character.UnicodeBlock来进行判断。代码如下:
- package com.example.test;
- public class CountCharacter {
- /**中文字符 */
- private int chCharacter = 0;
- /**英文字符 */
- private int enCharacter = 0;
- /**空格 */
- private int spaceCharacter = 0;
- /**数字 */
- private int numberCharacter = 0;
- /**其他字符 */
- private int otherCharacter = 0;
- /***
- * 统计字符串中中文,英文,数字,空格等字符个数
- * @param str 需要统计的字符串
- */
- public void count(String str) {
- if (null == str || str.equals("")) {
- System.out.println("字符串为空");
- return;
- }
- for (int i = 0; i < str.length(); i++) {
- char tmp = str.charAt(i);
- if ((tmp >= 'A' && tmp <= 'Z') || (tmp >= 'a' && tmp <= 'z')) {
- enCharacter ++;
- } else if ((tmp >= '0') && (tmp <= '9')) {
- numberCharacter ++;
- } else if (tmp ==' ') {
- spaceCharacter ++;
- } else if (isChinese(tmp)) {
- chCharacter ++;
- } else {
- otherCharacter ++;
- }
- }
- System.out.println("字符串:" + str + "");
- System.out.println("中文字符有:" + chCharacter);
- System.out.println("英文字符有:" + enCharacter);
- System.out.println("数字有:" + numberCharacter);
- System.out.println("空格有:" + spaceCharacter);
- System.out.println("其他字符有:" + otherCharacter);
- }
- /***
- * 判断字符是否为中文
- * @param ch 需要判断的字符
- * @return 中文返回true,非中文返回false
- */
- private boolean isChinese(char ch) {
- //获取此字符的UniCodeBlock
- Character.UnicodeBlock ub = Character.UnicodeBlock.of(ch);
- // GENERAL_PUNCTUATION 判断中文的“号
- // CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号
- // HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号
- if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
- || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
- || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
- || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
- System.out.println(ch + " 是中文");
- return true;
- }
- return false;
- }
- public static void main(String[] args) {
- String str = "adbs13姿z势12年概~3!a @x # $率 论zs12 szsgss 1234@#¥說說愛き ,。?!%……&*()——{}【】";
- CountCharacter countCharacter = new CountCharacter();
- countCharacter.count(str);
- }
- }
执行结果为:
姿 是中文
势 是中文
年 是中文
概 是中文
率 是中文
论 是中文
¥ 是中文
說 是中文
說 是中文
愛 是中文
, 是中文
。 是中文
? 是中文
! 是中文
… 是中文
… 是中文
( 是中文
) 是中文
— 是中文
— 是中文
【 是中文
】 是中文
字符串:adbs13姿z势12年概~3!a @x # $率 论zs12 szsgss 1234@#¥說說愛き ,。?!%……&*()——{}【】
中文字符有:22
英文字符有:15
数字有:11
空格有:8
其他字符有:13
参考:http://blog.163.com/dengjingniurou@126/blog/static/539891962012312114710444/
JAVA 统计字符串中中文,英文,数字,空格的个数的更多相关文章
- JAVA 统计字符串中中文,英文,数字,空格,特殊字符的个数
引言 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或'A'~'Z'等,Java判断一个字符串是否有中文是利用Unicode编码来判 ...
- JAVA从字符串中提取纯数字
/** * 从字符串中提取纯数字 * @param str * @return */ public static String getNumeric(String str) { String regE ...
- Java:求字符串中邻接的数字为一个整体
public static void main(String[] args) { String strNumbers = "0123456789";//用来进行判断数字的 Syst ...
- java判定字符串中仅有数字和- 正则表达式匹配 *** 最爱那水货
1.当有其他字符出现时,返回的数组长度>1 String s = "3---6\\5656"; Pattern pattern = Pattern.compil ...
- java统计字符串中每个字符出现的次数
package MapTest; import java.util.HashMap; public class MapTest { public static void Count(String st ...
- java 统计字符串中连续重复的字符,并得出新字符串
题目: 比如输入为aaabbc,输出a3b2c1 完整解答: public class Other { static String func(String str) { StringBuffer re ...
- Python统计字符串中的中英文字符、数字空格,特殊字符
# -*- coding:utf8 -*- import string from collections import namedtuple def str_count(s): '''找出字符串中的中 ...
- Oracle中中文、数字,英文混杂形式的字段进行排序的方法
http://blog.csdn.net/p451933505/article/details/9272257 对Oracle中中文.数字.英文混杂形式的字段进行排序的方法: 例如: order by ...
- java截取字符串中的数字
java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...
随机推荐
- [欧拉] poj 2513 Colored Sticks
主题链接: http://poj.org/problem? id=2513 Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Tota ...
- jQuery插件实战之fullcalendar(日历插件)Demo
jQuery的插件许多,应用的场景也很丰富,今天我这里给大家介绍一款很有用的日历页面开发插件 - fullcalendar,眼下最新版本号是1.5.1,使用这款插件可以高速帮助你高速编程实现基于web ...
- 用C++语言开发Android程序 配置开发环境
转自:http://www.cnblogs.com/yaotong/p/3622430.html 用C++语言开发Android程序 配置开发环境 如果你是一个C++语言的死忠,你喜欢C++语言到 ...
- JAVA 命令参数详解System.setProperty(
JAVA 命令参数详解: 1.-D<name>=<value> set a system property 设置系统属性. java -D参数简化加入多个jar java命令 ...
- Xamarin for android:为button设置click事件的几种方法
原文:Xamarin for android:为button设置click事件的几种方法 在Xamarin中一个最基础的事情,就是为一个button指定click事件处理方法,可是即使是这么一件事也有 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(七) Exception Handling Application Block 使用企业库异常处理应用程序模块的 ...
- 大并发连接的oracle在Linux下内存不足的问题的分析(转)
最近一台装有Rhel5.3的40G内存的机器上有一个oracle数据库,数据库的SGA设置为20G,当运行业务时,一个业务高峰期时,发现swap频繁交换,CPU 100%,Load很高,基本体现为内存 ...
- 上门洗车APP --- Androidclient开发 之 项目结构介绍
上门洗车APP --- Androidclient开发 之 项目结构介绍 前言 尽管公司项目较紧,但还是抽空给大家继续更新. o_O"~ 欢迎大家的关注,非常高兴和大家共同学习.前面给大家分 ...
- BI事实上的和维表定义
一个典型的例子是,逻辑业务相比立方体,产品尺寸.时间维度.位置尺寸,分别作为不同的轴.轴的交点是一个详细的事实.这一事实表是多维度的交叉点的一个表.维表是事实的分析的一种形式. 首先介绍下数据库结构中 ...
- ACE定时器
每一秒钟打印一行 http://www.tuicool.com/articles/Zb263e 计时器的打开和关闭封装 http://andylin02.iteye.com/blog/440572 自 ...