1

有没有办法为库支持的所有UChar表示货币符号探测ICU库?

我当前的解决方案是遍历所有语言环境和每个语言环境,执行以下操作:

const DecimalFormatSymbols *formatSymbols = formatter->getDecimalFormatSymbols();
UnicodeString currencySymbol = formatSymbols->getSymbol(DecimalFormatSymbols::kCurrencySymbol);

然后将 currencySymbol 中的每个 UChar 保存到地图中(因此没有重复项)。

4

1 回答 1

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;
}
于 2010-10-12T15:59:29.153 回答