求一段程序,统计汉字数量,其中不要算标点符号和空格
如:public Long getNum(String article)
{
    阁下的代码
}
我对正则不是太熟,请各位高手帮下忙!

解决方案 »

  1.   

    不知道这样能行吗?public class Test {    
        public static void main(String[] args) {
            String str = "gabcdeqer一二三四:,五!六七八九十:、,。";
            System.out.println(getNum(str));
        }    
        private static int getNum(String article) {
            char[] c = article.toCharArray();
            int num = 0;
            for(int i = 0; i < c.length; i++) {
                if(c[i] >= '\u4e00' && c[i] <= '\u9fff') {
                    num ++;
                }        
            }
            return num;
        }
    }
      

  2.   

    public static long getNum(String s) 

    char[] c=s.toCharArray();
    return c.length;
    } 这个行不行呀?
      

  3.   

    这样也可以。private static int getNum(String article) {
        article = article.replaceAll("[^\\u4e00-\\u9fff]", "");
        return article.length();
    }
      

  4.   

    这个是匹配中文的正则表达式.
    ^[\u4E00-\u9FFF]+$此外1楼的代码的小问题就是要确保String传入是个UNICODE的字符串...而且我印象里,你这么写的话,就不是UNICODE的.字符串字面量的编码和你系统的设置有关系.PS:我不确定, 试一下.
      

  5.   

    Java中读进来的字符默认的都是以Unicode进行编码的。
      

  6.   

    一楼是可以的,因为toCharArray()所得到的已经是UNICODE的字符数组了;再有4楼的正则表达式也是可以的,而且这种方式更简单些.而5楼的好像不行...