文档章节

有一个字符串,其中包含中文字符、英文字符和数字、空格及其他字符,请统计和打印出各个字符的个数。

一贱书生
 一贱书生
发布于 2016/11/03 17:21
字数 390
阅读 293
收藏 0

package cglib;

public class StringNumber {
    /*也可以用正则
     *  Pattern p = Pattern.compile("[a-zA-Z]");
     *  Pattern p = Pattern.compile("[\\u4e00-\\u9fa5]");
     * Pattern p = Pattern.compile("\\d");  
        Matcher m = p.matcher(str);  
        while(m.find()){  
            count++;  
        }  
     *
     *
     *
     *
     *
     *
     * */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         String str = "adbs13姿z势12年概~3!a @x # $率 论zs12 szsgss  1234@#¥說說愛き ,。?!%……&*()——{}【】";
         StringNumber countCharacter = new StringNumber();
         countCharacter.count(str);
        
    }
    
    public void count(String str){
        if (null == str || str.equals("")) {
            System.out.println("字符串为空");
            return;
        }
        int engishCount = 0;
        int chineseCount = 0;
         int digitCount = 0;
         int spaceCount = 0;
         int otherCount = 0;
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)>= '0' && str.charAt(i)<='9'){
                digitCount++;
            }
            else if((str.charAt(i)>= 'a' && str.charAt(i)<='z')||(str.charAt(i)>= 'A' && str.charAt(i)<='Z')){
                engishCount++;
            } else if (str.charAt(i) ==' ') {
                spaceCount ++;
            } else if (isChinese(str.charAt(i))) {
                chineseCount ++;
            } else {
                otherCount ++;
            }
        }
        System.out.println("中文:"+chineseCount);
        System.out.println("英文:"+engishCount);
        System.out.println("数字:"+digitCount);
        System.out.println("空格:"+spaceCount);
        System.out.println("其他字符:"+otherCount);
        
    }
    /***
     * 判断字符是否为中文
     * @param ch 需要判断的字符
     * @return 中文返回true,非中文返回false
     */
    public 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;
    }
    
     
    }
    

输出:

姿 是中文
势 是中文
年 是中文
概 是中文
率 是中文
论 是中文
¥ 是中文
說 是中文
說 是中文
愛 是中文
, 是中文
。 是中文
? 是中文
! 是中文
… 是中文
… 是中文
( 是中文
) 是中文
— 是中文
— 是中文
【 是中文
】 是中文
中文:22
英文:15
数字:11
空格:8
其他字符:13

© 著作权归作者所有

共有 人打赏支持
一贱书生
粉丝 19
博文 724
码字总数 600123
作品 0
私信 提问
一个很有意思的问题: 揭示了计算机程序问题的一般处理思路

一个很有意思的问题: 揭示了计算机程序问题的一般处理思路 问题标题:如何统计汉字的字数?问题内容:我想统计: "什么样的问题在 oschina 算是一个好问题?" 这个句子里面以oschina为分割总共...

FreeBlues
2013/08/21
0
0
js 正则表达式 判断 数字\字母\中文 (实例)

很实用的,就把他转帖过来了。转帖来源:http://hi.baidu.com/chenaran/blog/item/861f79d6e1fc3bd0a044df72.html js 正则表达式 判断 数字字母中文 (实例) 2010-07-23 15:40...

chuhx
2012/06/26
0
0
js判断输入是否中文,数字,身份证等等js函数

/ 判断指定的内容是否为空,若为空则弹出 警告框 / function isEmpty(theValue, strMsg){ if(theValue==""){ alert(strMsg+"不能为空!"); return true; } return false; } / 中文判断函数,允......

元来元去
2010/11/04
0
0
Python字符串常用处理函数

代码运行 python 版本 3.7 index() 获取子串在字符串中出现的位置索引值 使用索引获取单字符 索引0为第一字符。索引可为负数,表示从尾部(右侧)起始 使用切片获取子串 获取子串包括首索引字...

编程老陆
01/26
0
0
SQL Server-数据类型(七)

前言 前面几篇文章我们讲解了索引有关知识,这一节我们再继续我们下面内容讲解,简短的内容,深入的理解,Always to review the basics。 数据类型 SQL Server支持两种字符数据类型,一种是常...

jeffcky
2016/12/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

四、RabbitMQ3.7在CentOS7下的安装

安装依赖 sudo yum install -y gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git 创建yum源 vi /etc/yum.repos.d/rabbitmq-erlang.repo [......

XuePeng77
今天
2
0
android 延长Toast的时长

示例:myToast(5000,"hello"); public void myToast(int showTime, String msg) { Toast hello = Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT); new CountDownTimer(......

雨焰
昨天
4
0
浅谈mybatis的日志适配模式

Java开发中经常用到的日志框架有很多,Log4j、Log4j2、slf4j等等,Mybatis定义了一套统一的日志接口供上层使用,并为上述常用的日志框架提供了相应的适配器。有关适配器模式例子可以参考 设计...

算法之名
昨天
13
0
大数据教程(13.6)sqoop使用教程

上一章节,介绍了sqoop数据迁移工具安装以及简单导入实例的相关知识;本篇博客,博主将继续为小伙伴们分享sqoop的使用。 一、sqoop数据导入 (1)、导入关系表到HIVE ./sqoop import --connect...

em_aaron
昨天
3
0
Git cherry-pick 使用总结

应用背景:假设现在有两个分支:dev_01, dev_02. 如果我想把dev_01分支上的某几个commit合并到dev_02分支, 那么怎么办呢? 这就是cherry-pick的工作了。cherry-pick会捡选某些commit, 即把某...

天王盖地虎626
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部