在JAVA中,键盘输入的字符串中包含的字母、数字和其他字符的个数如何制作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JAVA中,键盘输入的字符串中包含的字母、数字和其他字符的个数如何制作?相关的知识,希望对你有一定的参考价值。

参考技术A

import java.util.Scanner;/** * 统计字符串中数字,字母,空格,其他字符的个数 * 

@author Administrator * */public class Data01     public static void main(String[] args)         int englishCount = 0;// 英文字母个数   

int spaceCount = 0;// 空格个数        int numCount = 0;// 数字个数     

int otherCount = 0;// 其他字符个数      

Scanner sc = new Scanner(System.in);    

System.out.println("请您输入一行字符:");   

String str = sc.nextLine();// 取得控制台输入的一行字符   

char[] ch = str.toCharArray();// 把取道的字符串变成一个char数组        

or (int i = 0; i < ch.length; i++)     

if (Character.isLetter(ch[i]))                 // 判断是否为字母                englishCount++;             

else if (Character.isSpaceChar(ch[i]))         

// 判断是否为空格                spaceCount++;             

else if (Character.isDigit(ch[i]))                 // 判断是否为数字                numCount++;


 else                 // 以上都不是则认为是其他字符                otherCount++;                          

System.out.println("字母的个数:" + englishCount);      

System.out.println("数字的个数:" + numCount);  

System.out.println("空格的个数:" + spaceCount);       

System.out.println("其他字符的个数:" + otherCount);    


NSPredicate 按数组中包含的第一个字母过滤

【中文标题】NSPredicate 按数组中包含的第一个字母过滤【英文标题】:NSPredicate filter by first letter that is contained in an array 【发布时间】:2015-12-03 21:21:20 【问题描述】:

我有一个字符串数组:

@[@"ballot", @"1-time", @"32marks", @"zoo"];

我需要一个谓词来查找所有以数字开头的字符串。所以过滤后的数组应该是:

@[@"1-time", @"32marks"]

这是我目前正在尝试的:

data = @[@"ballot", @"1-time", @"32marks", @"zoo"];
NSArray *numbers = @[@"0", @"1", @"2", @"3", @"4", @"5",@"6", @"7"];
NSPredicate *firstPredicate = [NSPredicate predicateWithFormat:@"ANY %K IN %@", numbers];
NSPredicate *secondPredicate = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH"];

NSCompoundPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:
                                      @[firstPredicate, secondPredicate]];

data = [data filteredArrayUsingPredicate:predicate];

它崩溃了:

-[__NSArrayI rangeOfString:]: unrecognized selector sent to instance 0x15fc99a0

我认为我不需要复合谓词,但我不知道如何将“数字”格式化为谓词字符串,以便它选择“数字”中的任何数字字符串。谢谢。

【问题讨论】:

【参考方案1】:

您可以将一个简单的正则表达式传递给您的谓词,以匹配任何以数字开头的字符串。比如:

NSArray *data = @[@"ballot", @"1-time", @"32marks", @"zoo"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^\\d.+"];
// Or ^\\d(.+)? if you want to match single-digit numbers also

data = [data filteredArrayUsingPredicate:predicate];

NSLog(@"%@", data); // Outputs: ("1-time", 32marks)

【讨论】:

以上是关于在JAVA中,键盘输入的字符串中包含的字母、数字和其他字符的个数如何制作?的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 统计键盘输入的一个字符串中的数字,字母大小写和其他。

NSPredicate 按数组中包含的第一个字母过滤

华为OD机试 -非严格递增连续数字序列(Java) | 机试题+算法思路+考点+代码解析 2023

c++从键盘输入字符串并保存成二进制文件

Java比较两个数字的大小 两个参数由键盘输入

Python中如何从键盘中输入字符串,统计字母,数字,符号和空格的个数?