Java 统计字符个数 【练习】

package com.ith.study;

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

public class StringCountDemo {
	
	public static void main(String []args) { 
		 
		String strTest1= "a它从添加位置开始在输入序列读取字符,并将其添加到给定字符串缓冲区。在读取以前匹配之前的最后字符(即位于索引 start() - 1 处的字符)之后,它就会停止。"
						+ "它将给定替换字符串添加到 位置设置为最 ))包括进来。"
						+ "   和美元符号 ($) 可能导致与作为字面值替换字符串时所产生的结果不同。美元符号可视为到如上所述已捕获子序列的引用,反斜线可用于转义替换字符串中的字面值字符。"
						+ "此方法设计用于循环以及 appendTail 和 find 方法中。例如,以下代码将 one dog two dogs in the yard 写入标准输出流中:"
						+ " Pattern p = Pattern.compile(cat);"
						+ " Matcher m = p.matcher('one cat two cats in the yard');"
						+ " StringBuffer sb = new StringBuffer();;"
						+ "  while (m.find()) {"
						+ " m.appendReplacement(sb, 'dog');"
						+ "}"
						+ "m.appendTail(sb);";
		
		//方法一:利用正则表达式,匹配字符串中小写a-z的字符个数或大写A-Z的字符个数,其他非字符的个数
		System.out.println("尚未计算空格,等等;;;;计算字符串有多少个字符"+strTest1.length());
		int lowerNum=0,upperNum=0,otherNum=0;
		Pattern   paternLower   =   Pattern.compile("[a-z]");  
		Pattern   paternUpper  =   Pattern.compile("[A-Z]"); 
		Matcher   mchLower   =   paternLower.matcher(strTest1);
		Matcher   mchUpper   =   paternUpper.matcher(strTest1);
		
		for(int i=0;i<strTest1.length();i++) { 
			if(mchLower.find()) {
				lowerNum++; 
			}
			else if(mchUpper.find()) {
				upperNum++;
			}
			else
			{
				otherNum++;
			}  
		}
		
		System.out.println("小写字符有:"+lowerNum);
		System.out.println("大写字符有:"+upperNum);
		System.out.println("其他字符有:"+otherNum);
		
		//方法二:使用charAt()方法读取字符串中每一个字符值,在把每个字符值和a-z比较,是否符合在这个值中,然后累加计数
		//在把每个字符值和A-Z比较,是否符合在这个值中,然后累加计数
		System.out.println("================方法二方法二方法二=================");
		int ilowerNum=0,iupperNum=0,iotherNum=0;
		for(int i=0;i<strTest1.length();i++) {
			char chr = strTest1.charAt(i);  //charAt获取字符串中指定的单个字符。
			 
			if(chr >= 'a' && chr <= 'z') {
				ilowerNum++;
			}
			else if(chr >= 'A' && chr <= 'Z') {
				iupperNum++;
			}
			else
			{
				iotherNum++;
			}			
		}
		
		System.out.println("小写字符有:"+ilowerNum);
		System.out.println("大写字符有:"+iupperNum);
		System.out.println("其他字符有:"+iotherNum);
		
		
		//方法三:首先使用charAt分离出字符串中的每个字符,在使用Character.isLowerCase 或isUpperCase 判断是否在区域内。 然后累计数字
		System.out.println("==================方法三方法三方法三==============");
		int ilowerNum3=0,iupperNum3=0,iotherNum3=0;
		for(int i=0;i<strTest1.length();i++) {
			char chr = strTest1.charAt(i);  //charAt获取字符串中指定的单个字符。
			 
			if(Character.isLowerCase(chr)) {
				ilowerNum3++;
			}
			else if(Character.isUpperCase(chr)) {
				iupperNum3++;
			}
			else
			{
				iotherNum3++;
			}			
		}
		System.out.println("小写字符有:"+ilowerNum3);
		System.out.println("大写字符有:"+iupperNum3);
		System.out.println("其他字符有:"+iotherNum3);
		
		
		//方法四: 使用indexOf函数,此处就不在写代码了,明白就好。
		
		
		
	}
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值