2007年12月 3日

[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はできる。
中田 伸悦

投稿者 xml-rpc : 2007年12月 3日 10:12
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/67142
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。