项目心得——统计字符串中的中文字数+英文单词数

统计字符串中的中文字数+英文单词数

  在做项目过程中,我遇到了统计评论字数的问题,要求统计 中文字数+英文单词数的总和。也就是统计字符串中的中文字数+英文单词数。

  下面直接上代码,代码逻辑,都在注释中。

package Test;

public class Main 
{
    public static void main(String[] args) 
    {
        String s="我爱Java每一天";
        int n=count_word_hanzi(s);
        System.out.println(n);
    }
    public static int count_word_hanzi(String str)
    {
        int ch_num=0;        //中文字数
        int word_num=0;        //英文单词数
        int blank=0;
        /*把html实体转换成html字符,然后把html标签剥去*/
        str=str.replaceAll("\\ ", " ");
        str=str.replaceAll("\\&lt;", "<");
        str=str.replaceAll("\\&gt;", ">");
        str=str.replaceAll("<[^>]*>", "").replaceAll("[(/>)<]", "");        
        /*统计中文字数*/
        for(int i=0;i<str.length();i++)
        {
            char c=str.charAt(i);
            Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
            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) 
            {
                ch_num++;        //如果是 中文字符,则ch_num++
                str=str.replace(c, ' ');//把中文字符换成空格,以便于统计英文单词数
            }
        }
        /*统计英文单词数*/
        String[] count1 =str.split("[ \\t\\n\\x0B\\f\\r]");
         int len=count1.length;
            for (int i = 0; i < count1.length; i++) 
            {
                if (count1[i].equals("")) 
                {
                   blank++;
                }
            }
            word_num= len-blank;
        return ch_num+word_num;
    }
}
//输出6

 

posted @ 2019-06-11 21:13  白春雨  阅读(764)  评论(0编辑  收藏  举报