需求是这样的:
手机屏幕上需要画一个字符串,我要首先判断字符串的长度
英文字母,数字,其他字符(即Ascii码)。每个字符占一个字符,分配 n 个象素
但是汉字,每个汉字占两个字符,所以要分配 2n 个象素
所以,我想请教一下,求一个正则表达式,判断一个String里有多少汉字
这样我就可以给一个字符串分配象素了:
分配的象素 = (String.length() + 汉字的数目) * n

解决方案 »

  1.   

            String str = "123abc中文部分,12323dfdf获取";        Pattern p = Pattern.compile("([\u4e00-\u9fa5]+)");
            Matcher m = p.matcher(str);        while (m.find()) {
                System.out.println(m.group());
            }截取中文。
      

  2.   


    分配的象素 = String.getBytes().length * n这样可以不?
      

  3.   

    用"[\u4e00-\u9fa5]"或者下面的都可以public static void main(String args[]){ 
             
            String str = "我爱北京天安门XXXX Japanes";
            
            System.out.println(str.length() - str.replaceAll("[\\p{InCJK Unified Ideographs}&&\\P{Cn}]", "").length());
            
             
        }