JAVA 统计字符串中中文,英文,数字,空格,特殊字符的个数

以下是统计字符串中中文、英文、数字、空格、特殊字符的个数的完整攻略。

思路分析

统计字符串中文字的个数,需要对字符串进行逐个字符的判断,判断该字符是否为中文、英文、数字、空格、特殊字符中的一种。其中,中文需要特殊处理。可以通过遍历字符串来实现。具体的流程如下:

  1. 定义变量,用于保存中文、英文、数字、空格、特殊字符的个数。
  2. 遍历字符串,对每个字符进行判断。
  3. 如果该字符是中文,则中文个数加一。
  4. 如果该字符是英文,则英文个数加一。
  5. 如果该字符是数字,则数字个数加一。
  6. 如果该字符是空格,则空格个数加一。
  7. 如果该字符是特殊字符,则特殊字符个数加一。
  8. 统计结果输出。

代码实现示例

以下是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技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java数据类型的规则

    Java数据类型的规则 在 Java 中,每一个变量都有一个数据类型,数据类型决定了变量可以存储的数据类型和操作的方式。Java 中的数据类型可以分为两类:基本数据类型和引用数据类型。在使用数据类型时,需要遵守以下规则: 每个变量都必须有一个明确的数据类型,例如:int、double、String 等。 在声明变量时,可以指定其数据类型,并且变量的数据类型不…

    Java 2023年5月20日
    00
  • SpringMVC集成FastJson使用流程详解

    SpringMVC集成FastJson使用流程详解 FastJson是阿里巴巴开源的一个JSON解析库,它可以将Java对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为Java对象。在SpringMVC中,我们可以使用FastJson来处理JSON格式的数据。本文将详细讲解SpringMVC集成FastJson的使用流程,并提供两个示例说明…

    Java 2023年5月17日
    00
  • 关于Java中properties文件编码问题

    关于Java中properties文件编码问题,一般可以从以下几个方面入手: properties文件编码格式 Java读取properties文件时的编码问题 properties文件中包含非ASCII字符的处理 1. properties文件编码格式 properties文件是一种很简单的配置文件,其实际上是一个基于key-value对的文本文件。pro…

    Java 2023年5月20日
    00
  • java冒泡排序算法代码

    下面是完整的讲解“Java冒泡排序算法代码”的攻略。 什么是冒泡排序算法? 冒泡排序算法是一种基础的排序算法,在数组中进行排序操作时用得比较多。其原理为遍历数组中的所有元素,不断比较相邻的两个元素,如果它们的顺序不正确,就进行交换,这样一轮遍历会使得最大(或最小)的元素“冒泡”到最后面,接着再次进行遍历,直到所有元素都排好序。 冒泡排序算法的代码实现 下面我…

    Java 2023年5月19日
    00
  • Apache FileUpload的两种上传方式介绍及应用

    Apache FileUpload的两种上传方式介绍及应用 Apache FileUpload是一个用于上传文件的Java库,支持多种上传方式。本文将介绍Apache FileUpload的两种上传方式:基于Servlet API和基于DiskFileItemFactory以及它们的应用。 基于Servlet API的上传方式 基于Servlet API的上…

    Java 2023年5月20日
    00
  • Java编程中更新XML文档的常用方法

    当需要更新XML文档时,Java编程中有多种常用的方法。本文将介绍Java编程中经常使用的两种方法。 方法一:使用DOM编程 DOM(文档对象模型)是一种Java内置的XML解析器。通常,使用DOM解析XML文档时,会将整个XML文件加载到内存中,构建一个XML的DOM树,程序员可以通过修改DOM树的方式来实现对XML文件的更新操作。 示例一:添加一个节点 …

    Java 2023年6月15日
    00
  • 关于Struts2的类型转换详解

    关于Struts2的类型转换详解 什么是类型转换 在Struts2中,类型转换是将HTTP请求中的字符串类型的参数转换为Java对象的过程。例如,将”1″转换为整数类型的1,将”2021-01-01″转换为日期类型的2021/01/01。类型转换是Struts2框架中非常重要的一部分,可以帮助开发者轻松地获取HTTP请求中的参数并将其转换为Java对象。St…

    Java 2023年5月20日
    00
  • Java Apache Commons报错“MalformedPatternException”的原因与解决方法

    “MalformedPatternException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 无效的正则表达式:如果正则表达式无效,则可能会出现此错误。在这种情况下,需要检查正则表达式以解决此问题。 无效的模式:如果模式无效,则可能会出现此错误。在这种情况下,需要检查模式以解决此问题。 以下是两个实例: 例1 如果…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部