Estoy escribiendo una función usando ICU para analizar una cadena Unicode que consta de caracteres numéricos kanji y desea devolver el valor entero de la cadena.¿Cómo se analizan los caracteres numéricos kanji con ICU?
"五" => 5
"三十 一" => 31
"五千 九百 七 十二" => 5972
Soy la creación de una zona a otra de la :: getJapan () y usando NumberFormat :: parse() para analizar la cadena de caracteres. Sin embargo, cada vez que le paso caracteres Kanji, el método parse() devuelve U_INVALID_FORMAT_ERROR.
¿Alguien sabe si la ICU admite cadenas de caracteres Kanji en el método NumberFormat :: parse()? Tenía la esperanza de que, como estoy configurando la configuración regional en japonés, sería capaz de analizar los valores numéricos de Kanji.
Gracias!
#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;
}
No lo sé, pero es una buena pregunta, estoy esperando una respuesta. –
¿Estás preguntando sobre el algoritmo de cómo resolver el problema? o ¿está preguntando acerca de cómo obtener los códigos de caracteres para interpretarlos (es decir, problema de codificación)? – hasen
¡Gracias por todas las respuestas y comentarios! Para aclarar lo que estoy buscando es si la ICU puede analizar cadenas correctamente con valores numéricos kanji y devolver el número como un entero. Estoy restringido a usar la UCI y si la UCI puede hacerlo, entonces no tendría que escribir mi propia rutina para manejar esto. Estoy desarrollando un programa para admitir esto para diferentes configuraciones regionales, y preferiría no escribir rutinas personalizadas para cada configuración regional. Idealmente, solo quiero pasar la configuración regional y la cadena de datos a la ICU, y hacer que devuelva el valor entero. –