- ?:怎么统计字符串中英文字母、空格、数字和其它字符的个数啊?
- ?:嗯,不难吧,字符在计算机是以二进制数字形式存储,对应有一个范围的,通过这个范围就可以确定字符的类型,看代码
import org.junit.Test;
/*
* 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
*/
public class charCount {
public void count(String string) {
int math = 0; // 数字字符个数
int eng = 0; // 英文字符个数
int nil = 0; // 空格字符个数
int other = 0; // 其他字符个数
for (int i = 0; i < string.length(); i++) {
if (string.charAt(i) >= '0' && string.charAt(i) <= '9') {
math++;
continue;
} else if (string.charAt(i) >= 'a' && string.charAt(i) <= 'z') {
eng++;
continue;
} else if (string.charAt(i) >= 'A' && string.charAt(i) <= 'Z') {
eng++;
continue;
} else if (string.charAt(i) == ' ') {
nil++;
continue;
} else {
other++;
}
}
System.out.println("数字字符个数: " + math);
System.out.println("英文字符个数: " + eng);
System.out.println("空格字符个数: " + nil);
System.out.println("其他字符个数: " + other);
}
public void count1(String str1) {
// 如果数值各个字符的ASCII值,可以直接用十进制进行比较
int math = 0; // 数字字符个数
int eng = 0; // 英文字符个数
int nil = 0; // 空格字符个数
int other = 0; // 其他字符个数
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) >= 48 && str1.charAt(i) <= 57) { // 字符0-9
// 对应十进制的48-57
math++;
continue;
} else if (str1.charAt(i) >= 97 && str1.charAt(i) <= 122) { // 字符a-z
// 对应十进制的97到122
eng++;
continue;
} else if (str1.charAt(i) >= 65 && str1.charAt(i) <= 90) { // 字符A-Z
// 对应十进制的65到90
eng++;
continue;
} else if (str1.charAt(i) == 32) { // 空格字符对应的十进制的32
nil++;
continue;
} else {
other++;
}
}
System.out.println("数字字符个数: " + math);
System.out.println("英文字符个数: " + eng);
System.out.println("空格字符个数: " + nil);
System.out.println("其他字符个数: " + other);
}
@Test
public void test() {
count1("canclnzzzz ciabcak k111e=--p=");
System.out.println("=================");
count("canclnzzzz ciabcak k111e=--p=");
}
}
测试结果