统计字符串中的英文字母、中文、数字、标点符号的个数的练习题

文章介绍了如何使用Java编程语言实现一个功能,通过遍历字符串并判断字符类型,统计其中英文字母、中文字符、数字和标点符号的数量。
摘要由CSDN通过智能技术生成

题目: 统计字符串中的英文字母、中文、数字、标点符号的个数的练习题

实现思路:

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

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值