如何从Java中的字符串中删除所有非字母数字阿拉伯字符?
答案 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();
}
我希望这对和我一样面临类似问题的人有所帮助。