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