2010年06月29日

Ruby 文字の削除

環境


ruby1.8.6
irb

指定した文字の削除


deleteメソッドとdelete!メソッドを使用します。
$ irb
hoge = "abcd"
hoge.delete("a")
=> "bcd"
hoge
=> "abcd"
hoge.delete("^a")
=> "a"
hoge
=> "abcd"
hoge.delete("a-c")
=> "d"
hoge
=> "abcd"

hoge = "abcd"
hoge.delete!("a")
=> "bcd"
hoge
=> "bcd"
hoge = "abcd"
hoge.delete("^a")
=> "a"
hoge
=> "a"
hoge = "abcd"
hoge.delete("a-c")
=> "d"
hoge
=> "d"

deleteは、非破壊的メソッド、
delete!は、破壊的メソッドとなります。
delete("a"):文字列から"a"を除きます。(aが2つ有れば2つ削除)
delete("^a"):文字列から"a"以外を除きます。
delete("a-c"):文字列から"abc"を除きます。
正規表現は使えませんのでご注意を

行末の文字削除


chopメソッドとchompメソッドを使用します。
$ irb
"abc\n".chop
=> "abc"
"abc\r\n".chop
=> "abc"
"abc".chop
=> "ab"

"abc\n".chomp
=> "abc"
"abc\r\n".chomp
=> "abc"
"abc".chomp
=> "abc"
"abc\r\n\r\n".chomp
=> "abc\n\r"
"abc\r\n\r\n".chomp("")
=> "abc"

chopメソッドは、文末の1文字を問答無用で削除します。
ただし、\r\nの場合は2文字削除します。
chompメソッドは、文末の1行の\nや\r\nだけを削除します。
引数を与えないと1つの\r\nだけですが、引数に""を与えてあげると
何個でも削除してくれます。

削除してくれるのはあくまで文末ですので、
"a\r\nb\r\nc\r\n".chomp
=> "a\r\nb\r\nc"

こんな風に途中の改行は削除されません。

引数を空白以外にしてみると
"abc,,".chomp(",")
=> "abc,"

こんな風に,が削除されます。
けど1個だけです。

ちなみにchopもchompもchop!とchomp!が有ります。
posted by RicK at 16:32| Comment(0) | TrackBack(0) | 日記
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/39335680

この記事へのトラックバック