项目心得——统计字符串中的中文字数+英文单词数
统计字符串中的中文字数+英文单词数
在做项目过程中,我遇到了统计评论字数的问题,要求统计 中文字数+英文单词数的总和。也就是统计字符串中的中文字数+英文单词数。
下面直接上代码,代码逻辑,都在注释中。
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("\\<", "<"); str=str.replaceAll("\\>", ">"); 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