题目: 统计字符串中的英文字母、中文、数字、标点符号的个数的练习题
实现思路:
1.初始化:
- 定义一个HashMap(名为map)来存储四种字符的统计结果。这四种字符分别是:英文字母、中文、数字和标点符号。
2.遍历字符串:
- 使用for循环遍历字符串str中的每个字符。
- 对于每个字符,执行以下判断:
3.判断字符类型:
- 如果字符是大写或小写英文字母(即位于'A'到'Z'或'a'到'z'之间),则增加"letters"的计数。这是通过获取当前"letters"的计数,增加1,然后重新存入map来实现的。
- 如果字符是数字(即位于'0'到'9'之间),则增加"numbers"的计数。直接存入map来实现的。
- 如果字符是中文字符(Unicode码位于0x4e00到0x9fa5之间),则增加"chinese"的计数。直接存入map来实现的。
- 如果字符既不是英文字母、数字和中文字符,那么它被视为标点符号,增加"flags"的计数。直接存入map来实现的。
package com.ztt.Demo02;
import java.util.HashMap;
public class demo13 {
public static void main(String[] args) {
//统计英文字母、中文、数字、标点符号的个数
String str = "OMG,你们的中英混搭真是各有千秋,但Someone丝毫掩盖不了你们那硬朗的英语底子!For eg.papi酱真的very有才华啊,哦买噶的,U6666666!!!罢特,someone也是成功地掩盖了自己小学程度的英语水平!这样式的,I是不会use的,because l hate 这种人very much~";
//将统计结果,保存到map
HashMap<String, Integer> map=new HashMap<String, Integer>();
// map.put("letters", 0);
// map.put("numbers", 0);
// map.put("chinese", 0);
// map.put("flags", 0);
//遍历字符串,判断每个字符
for(int i=0;i<str.length();i++) {
//获取一个字符
char c=str.charAt(i);
if(c>='A'&& c<='Z'||c>='a'&& c<='z') {
//获取原来的统计数值
int oldValue=map.getOrDefault("letters",0);
//在原来的统计数值基础上,自增1
int newValue=oldValue+1;
//重新保存
map.put("letters", newValue);
}else if(c>='0'&& c<='9'){
map.put("numbers", map.getOrDefault("numbers",0)+1);
}else if(c>=0x4e00 && c<=0x29fa5){
map.put("chinese", map.getOrDefault("chinese",0)+1);
}else {
map.put("flags", map.getOrDefault("flags",0)+1);
}
}
System.out.println(map);
}
}
运行结果:
{chinese=79, flags=13, numbers=7, letters=55}
public class demo07 {
public static void main(String[] args) {
// 遍历一个字符串,并统计英文字母 汉字 数字 标点符号的个数
String str="String str = \"OMG,你们的中英混搭真是各有千秋,但Someone丝毫掩盖不了你们那硬朗的英语底子!For eg.papi酱真的very有才华啊,哦买噶的,U6666666!!!罢特,someone也是成功地掩盖了自己小学程度的英语水平!这样式的,I是不会use的,because l hate 这种人very much~\";";
//每个字符分类都定义一个计数器变量
int letters=0,numbers=0,chs=0,flags=0;
for(int i=0,len=str.length();i<=len-1;i++) {
//获取当前字符串
char c=str.charAt(i);
//判断当前字符的分类
if(c>='A'&& c<='Z'||c>='a'&& c<='z') {
//英文字母
letters++;
}else if (c>=0x4e00 && c<= 0x29fa5) {
//汉字
chs++;
}else if(c>='0'&& c<='9') {
//数字
numbers++;
}else {
//标点符号
flags++;
}
}
System.out.println("英文字母"+letters);
System.out.println("汉字"+chs);
System.out.println("数字"+numbers);
System.out.println("标点符号"+flags);
}
}
运行结果:
英文字母64
汉字79
数字7
标点符号20