From: Nobuyoshi Nakada Date: 2007-12-03T10:12:00+09:00 Subject: [ruby-list:44297] Re: p "135790123456789".delete("357") #=> "190124689" なかだです。 At Mon, 3 Dec 2007 02:10:33 +0900, take_tk wrote in [ruby-list:44295]: > 以下は独り言なのですが、よろしかったら、String#delete の仕様が現在のよう > になっている理由を教えてくださいませ。 > > http://www.ruby-lang.org/ja/man/?cmd=view;name=String;em=String#delete > >str の形式は tr(1) と同じです。 trに合わせたということでしょう。 > p "135790123456789".delete("357") #=> "190124689" > > # "357" の並びの部分の削除を期待したのだが、 > # "3","5","7"のすべてを削除している。 そういう用途にはString#subがありますから。 > # deleteでは合理的な理由が見つからない。 > # trの第二引数のデフォルトを "" にすればよいじゃないか。 > > p "135790123456789".delete("357") #=> "190124689" > p "135790123456789".tr("357","") #=> "190124689" > #p "135790123456789".tr("357") #=> wrong number of arguments (1 for 2) (ArgumentError) deleteでは削除する文字を複数指定できます。 p "135790123456789".delete("0-9", "^29") #=> "929" subの第二引数のデフォルトを "" にする、というのはありかもしれま せん。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦