From: Masao Mutoh Date: 2002-02-04T00:54:53+09:00 Subject: [ruby-list:33732] 文字列の式展開について むとうです。 Ruby GetText Package(以降gettext)を使ってて思ったのですが、 文字列の式展開をする前の文字列を取得するうまい方法って ありませんでしょうか?(うーん、変な文章ですね....) うまく説明できないのでコードを書いてみますと....。 (1) hash = Hash.new hash["The value is %d\n"] = "値は%dです。\n" num = 1 printf(hash["The value is %d\n"], num) #→ 値は1です。 (2) hash = Hash.new hash["The value is #{num}\n"] = "値は#{num}です。\n" num = 1 print(hash["The value is #{num}\n"]) (1)は良いのですが、Rubyの式展開を使った(2)の場合は「値は1です。」 になりません。 (1)では"The value is %d\n"をキーワードとしてハッシュに登録できる のですが、(2)では"The value is \n"がキーワードとしてハッシュに 登録されてしまい、かつ、"The value is 1\n"で検索してしまいます。 ものすごく当たり前の話をしているかもしれませんが、 希望としては、"The value is #{num}\n"を、文字列自体をエスケープ 等をすることなく、そのままキーワードにし、上記例では「値は1です。」 という結果を取得したいです。 #が、それをうまく保持するうまい方法が思いつきません。 なんとなく以下のようなことを考えてみたのですが、 以下の感じだと、String#initializeって呼び出されないんです よね(当たり前か(^^;))。 class String def initialize(str) @key = str # -> "The value is #{num}\n" super end end num = 1 p "The value is #{num}\n" # -> "The value is 1\n" 何かうまい方法ってないでしょうか。 それでは。 -- .:% Masao Mutoh