我想知道文本中是否包含乌尔都语或阿拉伯语字母,如何判断特殊字符时产生错误结果的条件,有没有正确的方法来处理?是否有相关库或适用于此情况的正则表达式?
if (cap.replaceAll("\\s+", "").matches("[A-Za-z]+")
|| cap.replaceAll("\\s+", "").matches("[A-Za-z0-9]+")) {
Log.d("isUrdu", "false");
caption.setTypeface(Typeface.DEFAULT);
caption.setTextSize(16);
} else {
Log.d("isUrdu", "True");
/* if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1) {*/
caption.setTypeface(typeface);
caption.setTextSize(20);
/* }*/
}
if (cap.matches("(?s).*[\\p{Arabic}\\u0600-\\u06FF\\u0750-\\u077F\\uFB50-\\uFDFF\\uFE70-\\uFEFF].*")) { /*是阿拉伯语或乌尔都语*/ }
。如果只想检查乌尔都语,请使用"(?s).*[\\u0600-\\u06FF\\u0750-\\u077F\\uFB50-\\uFDFF\\uFE70-\\uFEFF].*"
。 - Wiktor Stribiżew