[#44310] プログラムに対して意図したとおりの文字列を渡す方法 — "Information Kanasansoft" <kanasansoft@...>

kanasanです。

9 messages 2007/12/05

[#44332] クラス:相互参照系の作成方法について質問です — "Saburoh Sakai" <sabroh@...>

はじめまして、さかいと申します。

12 messages 2007/12/11

[#44366] Rake改善プロジェクト — "Hajime Hoshi" <hajimehoshi@...>

東京大学修士 1 年の星一と申します。

14 messages 2007/12/19

[ruby-list:44299] Re: p "135790123456789".delete("357") #=> "190124689"

From: take_tk <ggb03124@...>
Date: 2007-12-03 15:56:35 UTC
List: ruby-list #44299
たけ(tk)です。

[ruby-list:44297] Re: p "135790123456789".delete("357")  #=> "190124689" 
にて 
Nobuyoshi Nakada <nobu@ruby-lang.org> さん 曰く:

お忙しいとこ、わざわざすみません。

> > 以下は独り言なのですが、よろしかったら、String#delete の仕様が現在のよう
> > になっている理由を教えてくださいませ。
> > 
> > http://www.ruby-lang.org/ja/man/?cmd=view;name=String;em=String#delete
> > >str の形式は tr(1) と同じです。
> 
> trに合わせたということでしょう。

そういうことですね。
実質的な理由は、

> deleteでは削除する文字を複数指定できます。
> 
> p "135790123456789".delete("0-9", "^29")   #=> "929"

ということなのでしょうかね。
これがうれしい場合というのは、どういう処理をしたい場合なのだろうか?

> > p "135790123456789".delete("357")        #=> "190124689"
> > 
> > # "357" の並びの部分の削除を期待したのだが、
> > # "3","5","7"のすべてを削除している。
> 
> そういう用途にはString#subがありますから。

> subの第二引数のデフォルトを "" にする、というのはありかもしれま
> せん。

これもそうですね。
gsub や sub で第二引数がデフォルトで "" になれば、ほぼ期待したものと同じ
になりそうです。

#p "135790123456789".delete(/357/)    #=> can't convert Regexp into String (TypeError)
#p "135790123456789".delete(/[357]/)  #=> can't convert Regexp into String (TypeError)
p :gsub
p "135790123456789".gsub(/357/,"")    #=> "190123456789" ← これを期待した。
p "135790123456789".gsub(/[357]/,"")  #=> "190124689" ← 「"3","5","7"のいずれか」を削除

> --- 僕の前にBugはない。
> --- 僕の後ろにBugはできる。

これ好きだなぁ・・

take_tk = kumagai hidetake

In This Thread