アプリ版:「スタンプのみでお礼する」機能のリリースについて

Ruby1.9を使っております。
次のような全角、半角が混在した文字列があり、その文字列の中から、
全角の文字数、半角の文字数がそれぞれ何文字あるか調べる方法はありますでしょうか。

■文字列例
"あいイウう"

どうか良きアドバイスをお願いいたします。

A 回答 (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はイとウが半角です。(投稿すると全角になってしまうかも知れませんがこちらでは半角の文字です)
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/21 19:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!