日期:2014-05-20  浏览次数:20727 次

在java如何判断字符串有多少中文字?(在线等)
小弟我以前用c语言的,最近做个课题,用java.不知道有没有好的方法,用于判断一个字符串中中文数量?

------解决方案--------------------
用正则表达式[\u4e00-\u9fa5]
public static void main(String[] args) {
int count=0;
String regEx = "[\\u4e00-\\u9fa5] ";
//System.out.println(regEx);
String str = "中文fdas ";
//System.out.println(str);
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
while (m.find()) {
for (int i = 0; i <= m.groupCount(); i++) {
count=count+1;
}
}
System.out.println( "共有 "+count+ "个 ");
}
------解决方案--------------------
String regEx = "[\\u4e00-\\u9fa5] ";
//System.out.println(regEx);
String str = "中文fda她jjs ";
String tem= str.replaceAll(regEx, "aa ");
System.out.println( " "+(tem.length()-str.length()));
不好意思,修改一下楼上的程序.

------解决方案--------------------
public static void main(String[] args) {
int count = 0;
String regEx = "[\u4e00-\u9fa5]+[^\u4e00-\u9fa5] ";
String str = "ss中文文fdas文 ";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
String repStr = null;
while (m.find()) {
repStr = m.group();
}
String regEx1 = "[\u4e00-\u9fa5] ";
Pattern p1 = Pattern.compile(regEx1);
Matcher m1 = p1.matcher(repStr);
while (m1.find()) {
count = count + 1;
}
System.out.println( "连续出现 " + count + "个中文 ");
}
虽然程序写得很垃圾,但是达到要求了。
------解决方案--------------------
package com.biaoflying;

import java.util.regex.*;
import java.util.*;

public class CountNum{
private static String str = "中文语言fd何as最近几天dafds " +
"工作dfds效率不高fdsf番dfsfdsa啊 ";
private static Pattern p;
private static Matcher m;
//private static int count=0;
public static int getNum(String str){
int count=0;
String regEx = "[\\u4e00-\\u9fa5] ";
p = Pattern.compile(regEx);
m = p.matcher(str);
while(m.find())count++;
return count;
}
public static int aloneChar(String str){
int together=0;
Map map=charLinked(str);
Iterator iter=map.values().iterator();
while(iter.hasNext()){
together+=((Integer)iter.next()).intValue();
}
return getNum(str)-together;
}
public static Map charLinked(String str){
Map map=new HashMap();
String temp=null;
String regEx = "[\\u4e00-\\u9fa5][\\u4e00-\\u9fa5]+ ";
p = Pattern.compile(regEx);
m = p.matcher(str);
while(m.find()){
temp=m.group();
map.put(temp,new Integer(temp.getBytes().length/2));
}
return map;
}
public static void main(String[] args) {
System.out.println(getNum(str));
System.out.println(charLinked(str));
System.out.println(aloneChar(str));
}
}