我正在使用ICU编写一个函数来解析由汉字数字字符组成的Unicode字符串,并希望返回该字符串的整数值。
例如: "五" => 5 "三十一" => 31 "五千九百七十二" => 5972
我将区域设置为Locale::getJapan(),并使用NumberFormat::parse()来解析字符字符串。但是,每当我传递任何汉字字符时,parse()方法都会返回U_INVALID_FORMAT_ERROR。
请问是否有人知道ICU是否支持在NumberFormat::parse()方法中解析汉字字符字符串?我希望由于我将区域设置为日语,它能够解析汉字数字值。
谢谢!
例如: "五" => 5 "三十一" => 31 "五千九百七十二" => 5972
我将区域设置为Locale::getJapan(),并使用NumberFormat::parse()来解析字符字符串。但是,每当我传递任何汉字字符时,parse()方法都会返回U_INVALID_FORMAT_ERROR。
请问是否有人知道ICU是否支持在NumberFormat::parse()方法中解析汉字字符字符串?我希望由于我将区域设置为日语,它能够解析汉字数字值。
谢谢!
#include <iostream>
#include <unicode/numfmt.h>
using namespace std;
int main(int argc, char **argv) {
const Locale &jaLocale = Locale::getJapan();
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf = NumberFormat::createInstance(jaLocale, status);
UChar number[] = {0x4E94}; // Character for '5' in Japanese '五'
UnicodeString numStr(number);
Formattable formattable;
nf->parse(numStr, formattable, status);
if (U_FAILURE(status)) {
cout << "error parsing as number: " << u_errorName(status) << endl;
return(1);
}
cout << "long value: " << formattable.getLong() << endl;
}