dポイントプレゼントキャンペーン実施中!

$KCODE='e'
require 'jcode'
puts 'ー'.tr('ー','-')

と書いてみたのですが、
/usr/local/lib/ruby/1.8/jcode.rb:137:in `tr!': premature end of regular expression: /[ー]/ (RegexpError)
from /usr/local/lib/ruby/1.8/jcode.rb:148:in `tr'
from b.rb:5

と怒られます。なにが悪いんですか? あと、実は全角の()も置換したいので、
$KCODE='e'
require 'jcode'
puts 'ー()'.tr('ー()','-()')
などと書いてみたのですが、今度は
-()))
と期待した結果と異なるものが出てきました。
何が悪いのでしょうか?

以上、ご指導の程、よろしくお願いいたします。
P.S
nkfって奴で、全角記号を半角記号へ変換って出来ないと思って、こんな事してます。

A 回答 (1件)

Ruby1.8で、ソースに日本語を使うには、起動オプションでeuc-jpだと -Ke と指定する必要があります。


#!/usr/bin/ruby -Ke
など。

プログラム中で$KCODE="e"等と書いても、それが効力を発するのは実行時のその文以降で、ソースプログラム解釈時(コンパイル時)には無効です。
    • good
    • 0
この回答へのお礼

notnotさん、いつもご回答有難うございます。

UTF-8で書いておりました。$KCODE="UTF-8"としたら直りました。

どうもありがとうございました。

お礼日時:2012/02/03 22:41

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