在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+"个");}
}
结果如下: