fetus Diary
2006/12/18(月) - isHiragana
inline std::wstring mb2wc(const std::string &) {
// MBCS→UNICODE 変換をする謎関数
...
}
inline bool isHiragana(wchar_t c) {
return (0x3040 <= c && c <= 0x309F) || // UNICODE Hiragana
(c == 0x30FC); // UNICODE Katakana "ー"
}
inline bool isHiragana(const std::wstring &str) {
for(std::wstring::const_iterator it = str.begin(); it != str.end(); ++it) {
if(! isHiragana(*it)) {
return false;
}
}
return true;
}
inline bool isHiragana(const std::string &str) {
return isHiragana(mb2wc(str));
}
うーむ。美しくないが判定的には一番楽。アプリが MBCS じゃなければ MBCS 周りのコードが無くなって綺麗なんだけど…。
長音記号はひらがなではないので、isHiragana(wchar_t) で許容しているのは誤りな気がする…。このあたり、自然言語との兼ね合いなので微妙に難しい。
- 06/12/18
16:0316:05
コメント
コメントはありません。