有没有办法探测代表该库支持的货币符号的所有ICU library的UChar's?
我当前的解决方案是遍历所有语言环境和每个语言环境,执行以下操作:
const DecimalFormatSymbols *formatSymbols = formatter->getDecimalFormatSymbols();
UnicodeString currencySymbol = formatSymbols->getSymbol(DecimalFormatSymbols::kCurrencySymbol);
然后将currencySymbol中的每个UChar保存到地图中(所以没有重复)。
答案 0 :(得分:2)
所有货币符号都有Sc(符号,货币)类别,因此您只需枚举该类别中的所有字符。
#include <cstdio>
#include <icu/unicode/uchar.h>
UBool print_all_currency_symbols(const void* context, UChar32 start, UChar32 limit, UCharCategory type) {
if (type == U_CURRENCY_SYMBOL) {
for (UChar32 c = start; c < limit; ++ c)
printf("%04x\n", c);
}
return TRUE;
}
int main() {
u_enumCharTypes(print_all_currency_symbols, NULL);
return 0;
}