java面试题:判断字符串包含字母、数字、空格、符号的数量

 在Java中,你可以使用正则表达式来检查字符串中包含多少个字母、数字、空格和符号。也可以使用基础api来实现业务逻辑,方法如下:

1 使用Character类的静态方法

以下代码定义了一个countCharacters方法,它遍历字符串中的每个字符,使用Character类的静态方法来检查每个字符是否是字母、数字、空格或符号,并相应地增加计数器。最后,它返回一个字符串,包含每种字符类型的数量。

public class CharacterCount {public static void main(String[] args){String input = "hello,beautiful girl!123455";System.out.println(countCharacters(input));}public static String countCharacters(String input){int letters = 0,digits = 0,spaces = 0,symbols = 0;char[] chars = input.toCharArray();for (char c : chars) {if (Character.isLetter(c)) {//判断是否为字符letters++;} else if (Character.isDigit(c)) {//判断是否为数字digits++;} else if (Character.isSpaceChar(c)) {//判断是否为空格spaces++;} else {判断是否为其他符号symbols++;}}return "包含字母: " + letters + "个, 包含数字: " + digits + "个, 包含空格: " + spaces + "个, 包含其他符号: " + symbols+"个";}}

结果如下:

2 使用正则表达式移除非统计字符

下面代码定义了一个StringStats类,其中包含四个方法:countLetters、countDigits、countSpaces和countSymbols。countLetters和countDigits方法通过正则表达式移除非字母和非数字的字符,然后返回剩余字符串的长度。countSpaces方法通过分割字符串获取空格的数量。countSymbols方法则通过从字符串总长度中减去字母、数字和空格的数量来得到符号的数量。

public class StringStats {public static void main(String[] args) {String input = "Example! String, with 123 numbers and spaces.";System.out.println("包含字符:"+countLetters(input)+"个");System.out.println("包含数字:"+countDigits(input));System.out.println("包含空格:"+countSpaces(input));System.out.println("包含其他符号:"+countSymbols(input));}public static int countLetters(String input) {return input.replaceAll("[^a-zA-Z]", "").length();}public static int countDigits(String input) {return input.replaceAll("[^0-9]", "").length();}public static int countSpaces(String input) {return input.split(" ").length - 1;}public static int countSymbols(String input) {return input.length() - countLetters(input) - countDigits(input) - countSpaces(input);}
}

结果如下:

3 使用正则表达式进行统计字符匹配

以下代码会统计并打印出输入字符串中的字母、数字、空格和符号的数量。正则表达式\\p{Alpha}+用于匹配字母,\\d+用于匹配数字,\\s+用于匹配空格,[^\\p{Alpha}\\d\\s]+用于匹配符号。然后使用Matcher类的find()方法来查找所有的匹配项,并计算它们的长度。

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class CharacterCounter {public static void main(String[] args) {String input = "Hello, World! 123 456.";int letters = 0;int digits = 0;int spaces = 0;int symbols = 0;// 正则表达式String regexLetters = "\\p{Alpha}+"; // 匹配字母Pattern patternLetters = Pattern.compile(regexLetters);Matcher matcherLetters = patternLetters.matcher(input);String regexDigits = "\\d+"; // 匹配数字Pattern patternDigits = Pattern.compile(regexDigits);Matcher matcherDigits = patternDigits.matcher(input);String regexSpaces = "\\s+"; // 匹配空格Pattern patternSpaces = Pattern.compile(regexSpaces);Matcher matcherSpaces = patternSpaces.matcher(input);String regexSymbols = "[^\\p{Alpha}\\d\\s]+"; // 匹配符号Pattern patternSymbols = Pattern.compile(regexSymbols);Matcher matcherSymbols = patternSymbols.matcher(input);while (matcherLetters.find()) {letters += matcherLetters.group().length();}while (matcherDigits.find()) {digits += matcherDigits.group().length();}while (matcherSpaces.find()) {spaces += matcherSpaces.group().length();}while (matcherSymbols.find()) {symbols += matcherSymbols.group().length();}System.out.println("包含字符:"+letters+"个");System.out.println("包含数字:"+digits+"个");System.out.println("包含空格:"+spaces+"个");System.out.println("包含其他符号:"+symbols+"个");}
}

结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS美化网页:理论基础及示例

CSS(层叠样式表)是用于美化网页和控制网页布局的重要技术。通过CSS,你可以对网页的元素进行样式设计,包括字体、颜色、间距、边框、背景等。以下是一些关键的CSS属性和概念,用于美化网页: 1. 字体样式&…

Java基础教程大纲

Java基础教程大纲 1、Java概述 jdk和jre介绍,idea介绍; 第一个java程序; javase javaee 2、 java基本数据类型 3、java变量和常量 和关键字 数组 4、java String 和操作符 5、 java运算符 比较,逻辑,算术 6、条件语句和循环语句 7、Java面向对象类和接口一 8、Jav…

qt的http原理

#ifndef TURING_H #define TURING_H #include <QObject》 #include <QNetworkAccessManager》 #include <QNetworkRequest》 #include <QNetworkReply》 class Turing : public QObject { Q_OBJECT public: explicit Turing(QObject *parent 0);Q_INVOKABLE v…

解决:微信支付 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

微信支付参数配置完成后请求报这个。在网上搜索后发现是ip配置的问题&#xff0c;我配置的是127.0.0.1。 而微信支付的时候需要获取用户的真实ip

Mysql关键字闭坑

Mysql关键字闭坑 INTERVAL 因为需求&#xff0c;所以数据设计时用到了一个INTERVAL字段,程序编译及启动都没有任何问题&#xff0c;但是到了查询的时候&#xff0c;直接控制台报语法异常&#xff0c;这就奇怪了&#xff0c;用的是MP插件作为查询&#xff0c;为啥报出语法错误&…

求职招聘平台小程序源码系统 附带源代码以及完整的安装部署教程

系统概述 求职招聘平台小程序源码系统是一款基于微信小程序的求职招聘平台&#xff0c;旨在为广大求职者和招聘企业提供一个高效、便捷的线上交流平台。该系统具备以下特点&#xff1a; 1.功能齐全&#xff1a;系统包含职位发布、简历投递、在线沟通、面试安排等求职招聘全流程…

Android Saving Activity State使用说明和注意事项

1、说明 在管理activity生命周期的简单介绍中提到当一个activity被暂停或停止时&#xff0c;该activity的状态被保留。因为当activity对象被暂停或停止时仍然保留在内存中&#xff0c;所有有关成员的信息和当前的状态仍然可用。这样&#xff0c;用户对该activity所做的任何更改…

笔记:完善python selenium 讯飞写作的整体自动化

昨天做得不太好,今天再来一次,我发现,只要写得多,一定会有发现。 1、加入本地目录,不要一直登录。 # 定义Edge浏览器的用户数据目录edge_user_data_dir = r"C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default"# 设置Edge选项edge_optio…

Spire.PDF for .NET【文档操作】演示:将多个 PDF 文件中的选定页面合并为一个

使用 Spire.PDF&#xff0c;您不仅可以将多个 PDF 文件合并为一个文件&#xff0c;还可以从源文件中选择特定页面并将它们合并为一个 PDF 文档。以下代码片段演示了相同的内容。 Spire.PDF for .NET 是一款独立 PDF 控件&#xff0c;用于 .NET 程序中创建、编辑和操作 PDF 文档…

腐烂的橘子 - (LeetCode)

一、概述 994. 腐烂的橘子 - 力扣&#xff08;LeetCode&#xff09;&#xff0c;今天刷到这道题&#xff0c;开始按照自己实现的思路写了一次&#xff0c;通过了调试&#xff0c;但是提交的时候&#xff0c;来了一个大的数据&#xff0c;就没有通过测试&#xff0c;百思不得其…

React 学习-6-列表 keys

1.生成列表的方式&#xff1a;使用map()循环数组&#xff0c;放入ul&#xff0c;li中&#xff0c;并将数组的index作为唯一key。key通常保存在ul上&#xff0c;而非单个元素li中.按照此思路手写代码如下&#xff1a; 1.创建div <div id"test"></div>2创…

牛顿/高斯牛顿/LM法与最小二乘

最小二乘分为线性最小二乘和非线性最小二乘 最小二乘目标函数都是min||f(x)||2 若f(x) ax b&#xff0c;就是线性最小二乘&#xff1b;若f(x) ax2 b / ax2 bx 之类的&#xff0c;就是非线性最小二乘&#xff1b; 求解线性最小二乘&#xff0c;【参考】 求解非线性最小二…

【多人协作】场景模拟(一)

文章目录 实现多人协作场景&#xff1a;操作流程1开发人员a和b克隆仓库到本地2在本地仓库建立分支并与远程分支建立链接3开发人员工作并提交代码4将合并dev分支与master分支 实现多人协作 多人协作开发是git的最核心也是最重要的操作。多人协作也就意味着同一时间里&#xff0…

关系数据库的规范化,关系模式,充分理解三级范式

第一范式 当一个集合R中&#xff0c;每一个元素都不可再分的时候&#xff0c;便符合第一范式。 例&#xff1a;{学号&#xff0c;姓名&#xff0c;专业编号&#xff0c;专业名称&#xff0c;课程号&#xff0c;课程名&#xff0c;成绩} 第二范式 当一个集合R&#xff0c;符合…

游戏私域运营干货必看 | 《 2023 中国移动游戏私域运营指南》下载

在新游竞争越发激烈、买量效率持续走低、用户注意力资源紧缺等悬而未决的现实困境下&#xff0c;游戏企业必须在存量市场中&#xff0c;寻找一条可行、可复制的出路。 为了一探究竟&#xff0c;网易云商分别面向国内 23 家中大型研运一体化游戏公司&#xff0c;与 2000 位真实…

红黑树!!

文章目录 1.红黑树的概念2.红黑树的几种情况2.1 情况一&#xff1a;cur为红&#xff0c;p为红&#xff0c;g为黑&#xff0c;u存在且为红(p为parent&#xff0c;g为grandfather&#xff0c;u为uncle)2.2 情况二&#xff1a;cur为红&#xff0c;p为红&#xff0c;g为黑&#xff…

PIC单片机提示 No valid installed HI-TECH compiler drivers

PIC单片机提示 No valid installed HI-TECH compiler drivers-CSDN博客

MATLAB支持向量机:函数或变量 ‘svmtrain‘ 无法识别解决方法

我的MATLAB版本是2020a&#xff0c;在运行程序时出现了一下报错 若在运行程序时出现了以下报错&#xff1a; 支持向量机程序在MATLAB执行代码的时候发现有错误。 试一下help&#xff0c;如下图所示&#xff0c;SVM_L和svmtrain均找不到。 打开matlab帮助文档&#xff1a; 可…

C# XPTable in .net6(XPTable控件使用说明八)

经过作者schoetbi、armin-pfaeffle的努力&#xff0c;XPTable已经可以在 winform .net6 .net8的环境下使用&#xff0c;版本升级到了2.0&#xff0c;这样就可以在winform下同时使用XPTABLE和EFcore, 这样就可以解决大部分的场景了。

【HMGD】GD32/STM32 DMA接收不定长串口数据

单片机型号&#xff1a;GD32F303系列 CubeMX配置 配置串口参数 开启DMA 开启中断 示例代码 使用到的变量 uint8_t RX_Buff_FLAG 0; uint8_t RX_Buff[300] {0}; uint8_t TX_Buff[300] {0};串口接收空闲函数 // 串口接收空闲函数 void HAL_UARTEx_RxEventCallback(UART_H…