[#44431] コンストラクタの引数について&インスタンス変数の持ち方について — Akira Hayakawa <ruby@...>

度々オブジェクト指向についての質問ですいません。

17 messages 2008/01/04
[#44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について — Yukihiro Matsumoto <matz@...> 2008/01/04

まつもと ゆきひろです

[#44469] pdf 作成 ライブラリ — "Luiz Aoki" <luizruby@...>

はじめまして、青木ルイスと申します、

14 messages 2008/01/12
[#44479] ファイル出力時のprintについて — m-hatake@... 2008/01/16

畠山と申します。

[#44483] format %g の丸めについて — 山崎雄介 <y-yamasaki@...>

山崎(ゆ)です。

14 messages 2008/01/16

[ruby-list:44536] カタカナ→ひらがな変換

From: "Hideo Konami" <konami@...>
Date: 2008-01-25 11:27:35 UTC
List: ruby-list #44536
小波です。

Ruby 1.9 で文字列に対して each_char, each_byte を使い分けること
になったということで,カタカナをひらがなに変換するメソッドを
作ってみましたが,うまくいきません。

EUC-JP のカタカナを1文字ずつ切り出してから2バイトに分けて,
最初の1バイトから1 を引いて,ふたたび合わせてやればバイト
構成上はうまくいくはずだと思うのですが,
character encodings differ (ArgumentError)
というエラーが出てしまいます。ところが,その文字を出力
させてやると,ちゃんと変換されているようなのです。

またコマンドライン引数の -Ke を外すとカタカナの範囲チェック
を完全にスルーしてしまって,何もやってくれません。

このようになる理由と,正しいやり方を教えていただけると助かり
ます。

#!/usr/local/bin/ruby -Ke
def kata2hira(jstr)
  str = ""
  range = 'ア' .. 'ン'
  jstr.each_char do |c|
    if range.include?(c) then
      a = []
      c.each_byte do |b|
        a << b
      end
      v = (a[0]-1).chr + a[1].chr
      #puts  v  # これはひらがなになっている
      str += v  # character encodings differ (ArgumentError)で落ちる
    else
      str += c
    end
  end 
  str
end

str = 'abcあいうえおアイウガギヒャョンん'
puts kata2hira(str)






In This Thread

Prev Next