题目: 统计字符串中的英文字母、中文、数字、标点符号的个数的练习题
实现思路:
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~";//将统计结果,保存到mapHashMap<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);//在原来的统计数值基础上,自增1int 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