我有一个UTF8编码的字符串,其中包含日文和罗马字符。 我想识别哪些是日文字符,哪些是罗马字符?如何鉴别?
UScriptCode uscript_getScript (UChar32 codepoint, UErrorCode *err)
Gets the script code associated with the given codepoint.
/\p{Katakana,Hiragana,Han}+/
当你解析这些东西时,要小心,因为日文文本中经常包含罗马字或数字。查看ja.wikipedia.org网站可以快速确认这一点。
bool isJapanese(wchar_t w)
{
// Hiragana...
if (w >= 0x3041 && w <= 0x309F)
return true;
// Do the same for the other sets
...
return false;
}
isRoman
函数...如果您不关心准确性,只需检查每个UTF-8序列的第一个字节:如果序列长度<=2(即第一个字节<=0xDF),则假定为罗马字符,否则为日语。
就我个人而言,我可能会使用Perl。
[a-zA-Z]
。 - Oliver