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函数,此处就不在写代码了,明白就好。
}
}