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) で許容しているのは誤りな気がする…。このあたり、自然言語との兼ね合いなので微妙に難しい。

コメント

コメントはありません。

名前
メール
コメント

※HTML タグは使えません。HTTP URL には自動リンクが張られます。

Captcha
画像から読み取れる文字を入力: