Java String 去掉除了汉字

介绍

在Java中,String是一个常用的类,用于表示字符串。在处理字符串的过程中,有时候我们需要过滤掉除了汉字以外的其他字符。本文将介绍如何使用Java编写代码来实现这个功能,并给出相应的代码示例。

方法一:正则表达式

一种常用的方法是使用正则表达式来过滤掉非汉字字符。正则表达式是一种用于匹配和操作字符串的强大工具。在Java中,可以使用replaceAll方法来实现正则表达式的替换功能。

下面是一个示例代码:

public class StringUtil {
    public static String removeNonChineseCharacters(String input) {
        return input.replaceAll("[^\\u4E00-\\u9FA5]", "");
    }
}

在上述代码中,removeNonChineseCharacters方法使用了replaceAll方法来替换所有非汉字字符。其中的正则表达式[^\\u4E00-\\u9FA5]表示匹配除了Unicode编码范围在\\u4E00(一)\\u9FA5(龥)之间的字符以外的所有字符。因此,该方法会将除了汉字以外的所有字符都替换为空字符串。

方法二:遍历字符串

另一种方法是使用遍历字符串的方式,逐个判断字符是否为汉字,然后构建新的字符串。

下面是一个示例代码:

public class StringUtil {
    public static String removeNonChineseCharacters(String input) {
        StringBuilder output = new StringBuilder();
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            if (isChineseCharacter(c)) {
                output.append(c);
            }
        }
        return output.toString();
    }

    private static boolean isChineseCharacter(char c) {
        Character.UnicodeBlock block = Character.UnicodeBlock.of(c);
        return block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || block == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || block == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A;
    }
}

在上述代码中,removeNonChineseCharacters方法使用了一个StringBuilder来构建新的字符串。遍历输入的字符串,对于每个字符,使用isChineseCharacter方法来判断是否为汉字字符,如果是,则将其添加到StringBuilder中。最后,返回StringBuilder转换成的字符串。

isChineseCharacter方法使用了Character.UnicodeBlock类来判断字符是否为汉字。UnicodeBlock是一个枚举类,定义了一些字符的Unicode区块。在方法中,我们将字符传递给Character.UnicodeBlock.of方法,然后判断返回的区块是否为汉字区块。如果是,则说明该字符是汉字。

使用示例

下面是一个使用示例:

public class Main {
    public static void main(String[] args) {
        String input = "Hello 你好 こんにちは";
        String output = StringUtil.removeNonChineseCharacters(input);
        System.out.println(output);
    }
}

输出结果是:你好

在上述示例中,我们将一个字符串Hello 你好 こんにちは传递给removeNonChineseCharacters方法,然后打印输出结果。可以看到,除了汉字以外的其他字符都被成功地过滤掉了。

类图

下面是本文涉及到的类的类图:

classDiagram
    class StringUtil {
        +removeNonChineseCharacters(input: String): String 
        -isChineseCharacter(c: char): boolean
    }
    class Main {
        +main(args: String[]): void
    }

总结

本文介绍了两种方法来实现Java String去掉除了汉字以外的字符的功能。第一种方法是使用正则表达式,可以使用replaceAll方法来替换所有非汉字字符。第二种方法是使用遍历字符串的方式,逐个判断字符是否为汉字,然后构建新的字符串。根据实际需求和具体场景,选择合适的方法来实现字符串过滤的功能。希望本文对您理解和使用Java中的字符串过滤功能有所帮助。