Ruby言語で全角カナ⇔半角カナ変換がうまくいかない原因

このQ&Aのポイント
  • Ruby言語で全角カナ⇔半角カナ変換がうまくいかない原因について詳しく説明します。
  • プログラミングにおいて、意図した通りの結果が得られない理由を解説します。
  • 全角カナと半角カナの変換に関する処理方法について、具体的なコード例を示します。
回答を見る
  • ベストアンサー

Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております

Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております。 以下のようにプログラミングをしてます。 結果が、思った通りではないのですが、何が原因でしょうか。 ※★→←★部分で囲んだ部分は半角文字です(ブラウザ上、半角文字が全角に変換されているようなので、  適宜そのような表記を入れました。 ●半角→全角変換 sss = "★→アイウエオ←★".tr('★→ア-ン←★', 'ア-ン') p sss ⇒★→アウオキケ←★ ●全角→半角 sss = "アイウエオ".tr('ア-ン', '★→ア-ン←★') p sss ⇒ア★→イ←★イ★→ウ←★ウ どうか原因を教えてください。

  • Ruby
  • 回答数1
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • siffon9
  • ベストアンサー率64% (136/211)
回答No.1

以下の様なページをみつけました。nkfを使用する必要があるようですね。 http://www.db.is.kyushu-u.ac.jp/rinkou/ruby/hankaku.html

参考URL:
http://www.db.is.kyushu-u.ac.jp/rinkou/ruby/hankaku.html
NOBU4517
質問者

お礼

nkfでうまく動作しました。 本当に有難うございました。 また、この応用にて、全角カナ→半角カナも出来ました。

関連するQ&A

  • Ruby1.9で全角文字を半角文字にうまく変換できません。

    Ruby1.9で全角文字を半角文字にうまく変換できません。 英数字までは以下のロジックでうまく出来たのですが、カナが正しく変換されません。 何か良い知恵をどうかご教示のほどお願いいたします。 ※★→←★の間の文字は半角カナです(ブラウザ上全角カナとなってしまうため、便宜上補足しました)。 moji = "イあ1Aa" moji.tr('a-zA-Z0-9ア-ン', 'a-zA-Z0-9★→ア-ン←★') 結果:★→ウ←★あ1Aa 何故か半角のイではなく半角のウとなってしまう。    ※アの場合のみ正しく半角のアに変換される。

    • ベストアンサー
    • Ruby
  • 半角カナ文字の変換

    半角カナ文字(濁点あり)の全角カナ文字への変換がうまくいかなくて悩んでいます。 現在、 HashTable.put("ア","ア"); HashTable.put("ン","ン"); このような感じで変換テーブルを作成し、 String strVal = "半角カナ文字"; for(int i = 0; i < strVal.length(); i++){   char c = strVal.charAt(i); if(HashTable.containsKey(c)){ strTmp.append(HashTable.get(c)); } } このような処理をしているのですが、 半角カナ+濁点(例えば、ガ)の変換が、 「カ゛」となってしまいます。 これを「ガ」とするにはどうすればよいでしょうか?? 何か良い方法がありましたら教えてください。 お願いします。

  • 半角カナを全角カナに変換したい

    表題の通りです。 先輩から引き継いだエクセルのデータが、全角カナと半角カナとの両方を、使い分けなどではなく使用しているものだったので、半角カナを全部、全角カナに変換したいと考えています。 置換機能で50音全部を置換するのは大変ですので、一度に変換する良い方法があれば教えてください。 また、全角アルファベットを、普通の英字(半角アルファベット?)にも変換したいと思っています。

  • 半角カナから全角カナへ

    お世話になります。 今、フォームから入力された半角カナを全角カナへ変換しようとしているのですが、どうしてもうまく行きません。 処理は以下のようにしています。 jcode::convert(\$str, 'euc'); if($str =~ /[\xA1-\xDF]/){ jcode::h2z_euc(\$str); } (1)まず、半角カナが含まれているかのチェックで[\xA1-\xDF]を使用していますが色々調べたところ、実際は (?:\x8E[\xA6-\xDF]) が正しいようなのですが、この場合文字数が少ないとひっかかってくれません。例えば半角のア1文字や2文字など。また、文字数が多くても半角英数と半角カナが混在しているとひっかからない場合もあります。 上記の式だとひっかかってくれますが、この判定で構わないのでしょうか。 (2)上記の式できちんと置換されるものとされないで漢字のように文字化けするものと出てきてしまいます。 例えば「インターフェース」などという半角は全滅です。 「バージョン」などは大丈夫でした。 間違いなど教えて頂ければと思います。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 半角カナから全角カナに変換

    Jcode.pmを使用して半角カナから全角カナに変換したいのです。 こちらの過去ログを拝見し、以下のようなロジックを記述したのですが、 ”Undefined subroutine &Jcode::h2z_euc called at test_jcode.pl line 7.”というエラーが出てしまいます。 use Jcode; $line = 'アイウエオ'; $ato = &Jcode::h2z_euc(\$line); print $ato, "\n"; どなたかご回答よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 全角カナを半角カナへ

    お聞きしたいのですが 全角カナを半角カナに変換したいのですが、どのような関数もしくはやり方(ロジック)があるでしょうか? ちなみにPHP4ではなくPHP3です。 すみませんが、宜しくお願いしますm(_ _)m

    • ベストアンサー
    • PHP
  • 全角 → 半角 への変換

    いつもお世話になります。 さて標記の件、データの変換で悩んでいます。 ACCESSのデータ(これも外部から取り込みます)中に全角文字が混じっていればその部分を半角に変えたいと思います。 全角文字が数字、ひらがな、カタカナのときは半角カナに出来ましたが、漢字の時に変換できません。 可能であれば間違えていても良いのでヨミガナに、不可なら半角スペース、これも不可なら削除したいです。 WinXP Office2000PROを使用しています。 以上、宜しくお願いいたします。

  • Excelで半角カナのみを全角に変換したい

    EXCELで、半角カナのみを全角に変換する方法はありますか? JISという関数がありますが、これは英数まで全角に変換されてしまいます。

  • エクセル2003でセル内の文字のうち、半角カナ文字だけを全角かなに変換

    エクセル2003でセル内の文字のうち、半角カナ文字だけを全角かなに変換する方法 数字や英文字は半角のまま残して、読みにくい半角カナだけを全角かなに変える方法はあるでしょうか? JIS()ですと、すべての文字が全角に変わってしまいます。 詳しい方、どうかよろしくお願い致します。

  • 半角カナを全角カナに変換する方法?

    言語:Perl5 環境:Unix 半角カナで入力された場合に全角カナへ変換する方法を教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう