如何计算出字符串中 汉字,字母,符号个数

运用正则表达式:

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

public class CountTest {
    public static void main(String args[]) {
        String str = "asdvdfdDERE123ABCD0012587我一二三四五";
        System.out.println("Numbers:" + countNumber(str));
        System.out.println("Letters:" + countLetter(str));
        System.out.println("Chinese:" + countChinese(str));
    }

    public static int countNumber(String str) {
        int count = 0;
        Pattern p = Pattern.compile("\\d");
        Matcher m = p.matcher(str);
        while(m.find()){
            count++;
        }
        return count;
    }

    public static int countLetter(String str) {
        int count = 0;
        Pattern p = Pattern.compile("[a-zA-Z]");
        Matcher m = p.matcher(str);
        while(m.find()){
            count++;
        }
        return count;
    }

    public static int countChinese(String str) {
        int count = 0;
        Pattern p = Pattern.compile("[\\u4e00-\\u9fa5]");
        Matcher m = p.matcher(str);
        while(m.find()){
            count++;
        }
        return count;
    }

}


 注意

在linux下用的是unicode,每个汉字是三个字节,在windows下常用gb2312,每个汉字两个字节

统计汉字个数的其他方法:


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class hdu_2030 {

	public static void main(String[] args) throws IOException {//似乎可以
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n=Integer.valueOf(br.readLine());
		while(n-->0){
			String s =br.readLine();
			
		
			System.out.println(count(s));
						
		}
	}
	   public static int count(String text) {
		   int len = text.length();
		   byte[] bytStr = text.getBytes();
		   int intStr, count = 0;
		   
		   for(int i = 0; i < bytStr.length; i++){
		     intStr = bytStr[i];
		     if(intStr < 0){//JAVA中中文字符是负的BYTE值。
		       count++;
		       i++;   //中文字符是双字节。
		     }
	         
	     }return count;
}

}



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {
	
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n=Integer.valueOf(br.readLine());
		while(n-->0){
			String s =br.readLine();
			int i,count=0;
			int len =s.length();			
			for(i=0;i<len;i++){   
				char a=s.charAt(i);
				if(a>126 ||a<32)
			
				 count++;
			}System.out.println(count);
		}
	}

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值