• ベストアンサー

Ruby1.9で文字列中の全角文字数を調べたい。

Ruby1.9を使っております。 次のような全角、半角が混在した文字列があり、その文字列の中から、 全角の文字数、半角の文字数がそれぞれ何文字あるか調べる方法はありますでしょうか。 ■文字列例 "あいイウう" どうか良きアドバイスをお願いいたします。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

OSというか漢字コードが提示されていないので、シフトJIS(Windowsで使用する漢字コード) という前提で回答します。 やり方は以下のとおりです。 1.文字列を個々の文字に分解する。 2.分解された個々の文字の文字のサイズ(バイト単位)を取得する。 3.そのサイズごとに集計する。 以下のサンプルコードを実行してください。 -------------------------------------- # coding:WINDOWS-31J def count_data(moji_tbl) zen = 0 han = 0 fumei = 0 for m in moji_tbl case m.bytesize when 1 han +=1 when 2 zen += 1 else fumei += 1 end end printf("半角の数=%d 全角の数=%d 不明な文字の数=%d\n",han,zen,fumei) end str1 = "あいイウう" str2 = "あいイウう" moji_tbl1 = str1.split(//) moji_tbl2 = str2.split(//) count_data(moji_tbl1) count_data(moji_tbl2) ------------------------------------- 実行結果は以下のとおりです。 半角の数=0 全角の数=5 不明な文字の数=0 半角の数=2 全角の数=3 不明な文字の数=0 str1は全て全角 str2はイとウが半角です。(投稿すると全角になってしまうかも知れませんがこちらでは半角の文字です)

nono4517
質問者

お礼

有難うございした。 100%欲しかった情報と結果を得られました。 心から感謝いたします。

関連するQ&A

専門家に質問してみよう