[\u4e00-\u9fa5]匹配中文无效果

一直都在你身后 2017-03-07 10:26:37
代码如下:
package opratestring;

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CountChar01 {
public static void main(String[] args) {
String instr = "hdsGH卡死减肥v1243556jsvj三大势力93463";
HandleChar handle = new HandleChar(instr);
handle.handle();
}

}

class HandleChar{
private String name ;
private int chinese;//统计中文数量
private int english;//统计英文数量
private int number;//统计数字数量

public HandleChar(String instr){
this.name = instr;
}

public void handle(){
char[] charr = name.toCharArray();
System.out.println(Arrays.toString(charr));
String oneword;
for(int i=0;i<charr.length;i++){
oneword = String.valueOf(charr[i]);
Pattern patnumber = Pattern.compile("^[0-9]*$");
Matcher matnumber = patnumber.matcher(oneword);
if(matnumber.find()){
number++;
}
Pattern patenglish = Pattern.compile("^[a-zA-Z]*$");
Matcher matenglish = patenglish.matcher(oneword);
if(matenglish.find()){
english++;
}
Pattern patchinese = Pattern.compile("^[\u4e00-\u9fa5]+$");
Matcher matchinese = patchinese.matcher(oneword);
if(matenglish.find()){
chinese++;
}
}
System.out.println("数字个数:"+number+",英文个数:"+english+",汉字个数:"+chinese);

}

}

运行结果如下:
[h, d, s, G, H, 卡, 死, 减, 肥, v, 1, 2, 4, 3, 5, 5, 6, j, s, v, j, 三, 大, 势, 力, 9, 3, 4, 6, 3]
数字个数:12,英文个数:10,汉字个数:0

不知道社么地方写的有问题,汉字个数一直匹配是0,求大神指教,谢谢
...全文
603 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2楼老鼠拧刀满街找猫 的回复:

你写的那个应该是因为变量调用错了
还真是的,粗心了呀
  • 打赏
  • 举报
回复
引用 1楼老鼠拧刀满街找猫 的回复:


	public static void main(String[] args) {
		String instr = "hdsGH卡死减肥v1243556jsvj三大势力93463";
		System.out.println("数字个数:"+countDigit(instr));
		System.out.println("英文个数:"+countLetter(instr));
		System.out.println("中文个数:"+countChinese(instr));
		
	}
	/**
	 * 统计中文个数
	 * @param input
	 * @return
	 */
	public static int countChinese(String input){
		return count("[\u4e00-\u9fa5]", input);
	}
	/**
	 * 统计字母个数
	 * @param input
	 * @return
	 */
	public static int countLetter(String input){
		return count("[a-zA-Z]", input);
	}
	/**
	 * 统计数字个数
	 * @param input
	 * @return
	 */
	public static int countDigit(String input){
		return count("\\d", input);
	}
	/**
	 * 统计
	 * @param regex
	 * @param input
	 * @return
	 */
	public static int count(String regex,String input){
		Matcher m=Pattern.compile(regex).matcher(input);
		int counter=0;
		while(m.find()){
			counter++;
		}
		return counter;
	}
给你写了个,比你那个简单多了
谢谢大神
双子叶 2017-03-07
  • 打赏
  • 举报
回复
你将if(xx.find())改成while(xx.find())
  • 打赏
  • 举报
回复

你写的那个应该是因为变量调用错了
  • 打赏
  • 举报
回复


	public static void main(String[] args) {
		String instr = "hdsGH卡死减肥v1243556jsvj三大势力93463";
		System.out.println("数字个数:"+countDigit(instr));
		System.out.println("英文个数:"+countLetter(instr));
		System.out.println("中文个数:"+countChinese(instr));
		
	}
	/**
	 * 统计中文个数
	 * @param input
	 * @return
	 */
	public static int countChinese(String input){
		return count("[\u4e00-\u9fa5]", input);
	}
	/**
	 * 统计字母个数
	 * @param input
	 * @return
	 */
	public static int countLetter(String input){
		return count("[a-zA-Z]", input);
	}
	/**
	 * 统计数字个数
	 * @param input
	 * @return
	 */
	public static int countDigit(String input){
		return count("\\d", input);
	}
	/**
	 * 统计
	 * @param regex
	 * @param input
	 * @return
	 */
	public static int count(String regex,String input){
		Matcher m=Pattern.compile(regex).matcher(input);
		int counter=0;
		while(m.find()){
			counter++;
		}
		return counter;
	}
给你写了个,比你那个简单多了

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧