12. 5月 2010 · Write a comment · Categories: Ruby
string.sub(/^No¥.(\d+)/, "#{$1}番目")

とかやってもきちんと置換されない。
何故かと言うと、#{}の式展開は正規表現マッチの前に行われるから。

string.sub(/^No¥.(\d+)/) {"#{$1}番目"}

とブロックに書き換えれば正しく置換される。

まぁ、お約束なんだけどいつも忘れた頃にハマるのでメモメモ。
gsubとかeachブロックとかでまとめて置換すると一見動いてるように見えたりして罠に陥るんだよね。

ついでにevalにコードを渡した時にrescueする方法。

begin
  @result = eval(@code)
rescue SyntaxError
  @result = 'Error! (in Syntax)'
end

明示的に例外を指定しないと捕まえてくれない。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>