JAVA 统计字符串中中文、英文、数字、空格、特殊字符的个数
在日常的编程工作中,我们经常需要统计字符串中不同类型的字符个数,例如中文、英文、数字、空格、特殊字符等。在 Java 中,我们可以使用 Unicode 编码来判断字符类型,然后进行统计。在这篇文章中,我们将介绍如何使用 Java 来统计字符串中中文、英文、数字、空格、特殊字符的个数。
让我们了解 Unicode 编码。在 Unicode 编码表中,每个字符都有一个唯一的编码。我们可以根据不同的编码区间来判断字符类型。例如,数字的编码区间为 '0'~'9',英文字母的编码区间为 'a'~'z' 或 'A'~'Z' 等。然而,使用 Unicode 编码来判断中文字符并不十分精确,因为有些中文的标点符号利用 Unicode 编码会得到错误的结果。因此,我们需要使用 Character.UnicodeBlock 来进行判断。
下面是一个使用 Java 统计字符串中中文、英文、数字、空格、特殊字符的个数的示例代码:
```java
package cn.csrc.base.count;
public class CountCharacter {
public static void main(String[] args) {
String str ="我爱你abcd123中国 #!";
CountCharacter countCharacter = new CountCharacter();
countCharacter.count(str);
}
/ 中文字符 */
private int chCharacter = 0;
/ 英文字符 */
private int enCharacter = 0;
/ 空格 */
private int spaceCharacter = 0;
/ 数字 */
private int numberCharacter = 0;
/ 其他字符 */
private int otherCharacter = 0;
// 记录中文字符
private StringBuilder sb1 = new StringBuilder();
// 记录英文字符
private StringBuilder sb2 = new StringBuilder();
// 记录数字
private StringBuilder sb3 = new StringBuilder();
// 记录特殊字符
private StringBuilder sb4 = new StringBuilder();
/
* 统计字符串中中文,英文,数字,空格等字符个数
* @param str 需要统计的字符串
*/
public void count(String str) {
if (str.equals("") || str == null) {
System.out.println("字符串为空");
return;
}
for (int i = 0; i < str.length(); i++) {
char tmp = str.charAt(i);
if ((tmp >= 'A' && tmp <= 'Z') || (tmp >= 'a' && tmp <= 'z')) {
enCharacter++;
sb2.append(tmp + " ");
} else if ((tmp >= '0') && (tmp <= '9')) {
numberCharacter++;
sb3.append(tmp + " ");
} else if (tmp == ' ') {
spaceCharacter++;
} else if (isChinese(tmp)) {
chCharacter++;
sb1.append(tmp + " ");
} else {
otherCharacter++;
sb4.append(tmp + " ");
}
}
System.out.println("字符串:" + str + " \r\n");
System.out.println("中文字符有:" + chCharacter + "个 (" + sb1.toString() + ")");
System.out.println("英文字符有:" + enCharacter + "个 (" + sb2.toString() + ")");
System.out.println("数字有:" + numberCharacter + "个 (" + sb3.toString() + ")");
System.out.println("空格有:" + spaceCharacter + "个");
System.out.println("特殊字符有:" + otherCharacter + "个 (" + sb4.toString() + ")");
}
/
* 判断字符是否为中文
* @param c 字符
* @return 是否为中文
*/
private boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A) {
return true;
}
return false;
}
}
```
在上面的代码中,我们使用了一个 CountCharacter 类来统计字符串中不同的字符个数。在 count 方法中,我们使用了一个 for 循环来遍历字符串的每个字符,然后根据字符类型进行统计。我们使用 System.out.println 来输出统计结果。
需要注意的是,在判断中文字符时,我们使用了 Character.UnicodeBlock 来进行判断。这可以避免使用 Unicode 编码来判断中文字符的不精确性。
在 Java 中,我们可以使用 Unicode 编码和 Character.UnicodeBlock 来统计字符串中不同的字符个数。这可以满足我们在日常编程工作中的需求。