以下是统计字符串中中文、英文、数字、空格、特殊字符的个数的完整攻略。
思路分析
统计字符串中文字的个数,需要对字符串进行逐个字符的判断,判断该字符是否为中文、英文、数字、空格、特殊字符中的一种。其中,中文需要特殊处理。可以通过遍历字符串来实现。具体的流程如下:
- 定义变量,用于保存中文、英文、数字、空格、特殊字符的个数。
- 遍历字符串,对每个字符进行判断。
- 如果该字符是中文,则中文个数加一。
- 如果该字符是英文,则英文个数加一。
- 如果该字符是数字,则数字个数加一。
- 如果该字符是空格,则空格个数加一。
- 如果该字符是特殊字符,则特殊字符个数加一。
- 统计结果输出。
代码实现示例
以下是Java代码实现示例,统计一个字符串中中文、英文、数字、空格、特殊字符的个数:
public class StringCount {
public static void main(String[] args) {
String str = "Hello, 你好, 123!";
int chineseCount = 0;
int englishCount = 0;
int numberCount = 0;
int spaceCount = 0;
int otherCount = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (isChinese(c)) {
chineseCount++;
} else if (isEnglish(c)) {
englishCount++;
} else if (isNumber(c)) {
numberCount++;
} else if (isSpace(c)) {
spaceCount++;
} else {
otherCount++;
}
}
System.out.println("中文个数:" + chineseCount);
System.out.println("英文个数:" + englishCount);
System.out.println("数字个数:" + numberCount);
System.out.println("空格个数:" + spaceCount);
System.out.println("特殊字符个数:" + otherCount);
}
// 判断字符是否为中文
public static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS;
}
// 判断字符是否为英文
public static boolean isEnglish(char c) {
return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
}
// 判断字符是否为数字
public static boolean isNumber(char c) {
return c >= '0' && c <= '9';
}
// 判断字符是否为空格
public static boolean isSpace(char c) {
return c == ' ';
}
}
上述代码输出结果如下:
中文个数:2
英文个数:8
数字个数:3
空格个数:4
特殊字符个数:2
再来看一个示例:
public class StringCount {
public static void main(String[] args) {
String str = "学习Java,快乐Coding!123";
int chineseCount = 0;
int englishCount = 0;
int numberCount = 0;
int spaceCount = 0;
int otherCount = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (isChinese(c)) {
chineseCount++;
} else if (isEnglish(c)) {
englishCount++;
} else if (isNumber(c)) {
numberCount++;
} else if (isSpace(c)) {
spaceCount++;
} else {
otherCount++;
}
}
System.out.println("中文个数:" + chineseCount);
System.out.println("英文个数:" + englishCount);
System.out.println("数字个数:" + numberCount);
System.out.println("空格个数:" + spaceCount);
System.out.println("特殊字符个数:" + otherCount);
}
// 判断字符是否为中文
public static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS;
}
// 判断字符是否为英文
public static boolean isEnglish(char c) {
return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
}
// 判断字符是否为数字
public static boolean isNumber(char c) {
return c >= '0' && c <= '9';
}
// 判断字符是否为空格
public static boolean isSpace(char c) {
return c == ' ';
}
}
上述代码输出结果如下:
中文个数:2
英文个数:14
数字个数:3
空格个数:2
特殊字符个数:2
上述两个示例可以看出,该算法处理中文还是较为准确的。但是如果要处理一些繁体中文,可能会出现判断错误的情况。此时可以通过扩展isChinese()
方法的Character.UnicodeBlock
进行处理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA 统计字符串中中文,英文,数字,空格,特殊字符的个数 - Python技术站