从Java

时间:2016-09-13 13:31:11

标签: java arabic

如何从Java中的字符串中删除所有非字母数字阿拉伯字符?

3 个答案:

答案 0 :(得分:1)

使用正则表达式[^A-Za-z0-9 ]正则表达式只允许从A到Z的字母和从a到z的数字从0到9。没有别的

答案 1 :(得分:1)

以下是完整的答案:

   String patternString = "";
    Pattern pattern = null;
    Matcher matcher = null;
    String normalizedString = "";

    patternString = "[^A-Za-zأ-ْ-9 ]";
    pattern = Pattern.compile(patternString);
    matcher = pattern.matcher(string);
    normalizedString = matcher.replaceAll("");

答案 2 :(得分:0)

我尝试了多种解决方案,但没有任何效果显着。我尝试了当前线程以及这里的所有解决方案 - how could i remove arabic punctuation form a String in java

由于没有其他解决方案完全有效,我创建了仅保留阿拉伯字符并删除所有字符的方法,如下所示 -

public static String findArabicString(String s) {
    StringBuilder finalValue = new StringBuilder();
    
     if (null != s) {
        for (int i = 0; i < s.length();) {
            int c = s.codePointAt(i);
            if ((c >= 0x0600 && c <= 0x06E0))
                finalValue.append((char) c);
            i += Character.charCount(c);            
        }
     }
    
    System.out.println(finalValue.toString());
    return finalValue.toString();
}

该方法可以根据需要自定义,例如我想保留空格和阿拉伯字符,那么测试条件需要稍微改变如下-

public static String findArabicString(String s) {
    StringBuilder finalValue = new StringBuilder();
    
     if (null != s) {
        for (int i = 0; i < s.length();) {
            int c = s.codePointAt(i);
            // 32 is unicode for white space
            if ((c >= 0x0600 && c <= 0x06E0) || c == 32)
                finalValue.append((char) c);
            i += Character.charCount(c);            
        }
     }
    
    System.out.println(finalValue.toString());
    return finalValue.toString();
}

我希望这对和我一样面临类似问题的人有所帮助。