2014-09-04 82 views

回答

1

好的,沒有答案。這是凌亂的解決方案:

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; 
}