是否有任何Java API將Unicode數字規範化爲ASCII數字?如何規範Java中的Unicode數字
有一個在JDK和ICU4J標準化的API,它似乎不能夠處理這種正常化的(因爲它可能不是所謂的Unicode standard標準化)
我需要的是把所有形式的統一數字( listed in this post)分解爲[0-9]。一個可能的混亂解決方案是10替換 - 所有數字從0到9.
是否有任何Java API將Unicode數字規範化爲ASCII數字?如何規範Java中的Unicode數字
有一個在JDK和ICU4J標準化的API,它似乎不能夠處理這種正常化的(因爲它可能不是所謂的Unicode standard標準化)
我需要的是把所有形式的統一數字( listed in this post)分解爲[0-9]。一個可能的混亂解決方案是10替換 - 所有數字從0到9.
好的,沒有答案。這是凌亂的解決方案:
static final Pattern DIGIT_0 = Pattern.compile("[٠۰߀०০੦૦୦௦౦೦൦๐໐0]");
static final Pattern DIGIT_1 = Pattern.compile("[١۱߁१১੧૧୧௧౧೧൧๑໑1]");
static final Pattern DIGIT_2 = Pattern.compile("[٢۲߂२২੨૨୨௨౨೨൨๒໒2]");
static final Pattern DIGIT_3 = Pattern.compile("[٣۳߃३৩੩૩୩௩౩೩൩๓໓3]");
static final Pattern DIGIT_4 = Pattern.compile("[٤۴߄४৪੪૪୪௪౪೪൪๔໔4]");
static final Pattern DIGIT_5 = Pattern.compile("[٥۵߅५৫੫૫୫௫౫೫൫๕໕5]");
static final Pattern DIGIT_6 = Pattern.compile("[٦۶߆६৬੬૬୬௬౬೬൬๖໖6]");
static final Pattern DIGIT_7 = Pattern.compile("[٧۷߇७৭੭૭୭௭౭೭൭๗໗7]");
static final Pattern DIGIT_8 = Pattern.compile("[٨۸߈८৮੮૮୮௮౮೮൮๘໘8]");
static final Pattern DIGIT_9 = Pattern.compile("[٩۹߉९৯੯૯୯௯౯೯൯๙໙9��]");
public static final Pattern[] DIGIT_PATTERN_LIST = { DIGIT_0, DIGIT_1, DIGIT_2, DIGIT_3, DIGIT_4, DIGIT_5, DIGIT_6, DIGIT_7, DIGIT_8,
DIGIT_9 };
/**
* Converts any Unicode digits into their ASCII equivalent. For example given 23۹٤۴ returns 23944
*
* @param str
* @return
*/
public static String normalizeUnicodeDigits(String str) {
for (int i = 0; i < DIGIT_PATTERN_LIST.length; i++) {
Pattern dp = DIGIT_PATTERN_LIST[i];
str = dp.matcher(str).replaceAll(String.valueOf(i));
}
return str;
}
你想要做什麼叫transliteration。