如果a = 'foo'
我可以做a << 'bar'
並找回foobar
但是說我要刪除bar
?在Ruby中追加什麼是相反的? <<
我知道我可以做a.slice!(3..a.length)
- 但該死的是醜陋的。
讓我們regex
這個愚蠢的混蛋,如:a.gsub!('bar','')
- 但就是這個最好方法?
爲什麼我就不能做到這一點?:a >> 'bar'
- 這將是超級騙子!
那麼你們怎麼做呢?什麼是最快的方法?
如果a = 'foo'
我可以做a << 'bar'
並找回foobar
但是說我要刪除bar
?在Ruby中追加什麼是相反的? <<
我知道我可以做a.slice!(3..a.length)
- 但該死的是醜陋的。
讓我們regex
這個愚蠢的混蛋,如:a.gsub!('bar','')
- 但就是這個最好方法?
爲什麼我就不能做到這一點?:a >> 'bar'
- 這將是超級騙子!
那麼你們怎麼做呢?什麼是最快的方法?
爲什麼我不能這樣做?:a >>'bar' - 這會超級不爽!
因爲它更清晰地使用[]
。
a = 'foobar'
a['bar'] = ''
a # 'foo'
如果你只需要bar
末匹配,使用正則表達式:
a = 'barfoobar'
a[/bar$/] = ''
a # 'barfoo'
a >> 'bar'
不會是「超級騙子」,這將是完全不明確。 a >> b
是什麼意思?你是否彈出一個字符並將其存儲在b
中,或者將b
的值從a
的末尾跳出,或將雙方都轉換爲整數和位移? <<
表示移動,右邊的字符向左移動。 >>
會向我建議角色正在從左向右移動,而不是我想從左側移除和丟棄角色。
a << 'foo'
的工作原因是因爲追加到字符串是軟件中最常見的事情之一。
「append」或「push」的反義詞通常稱爲「pop」。這些名字來自一個堆棧(數據結構)的術語,是可用與數組:
ary = ?f, ?o, ?o
suffix = ?b, ?a, ?r
suffix.each &ary.method(:push)
ary #=> ["f", "o", "o", "b", "a", "r"]
ary.pop 3 #=> ["b", "a", "r"]
要使用推,並與琴絃彈出,你必須首先arrayify他們:
str = 'foobar'
# arrayification
ary = str.each_char.to_a
ary.pop(3).join #=> "bar"
str = ary.join #=> foo
會變成這樣不是在這種情況下工作,並沒有比gsub更乾淨?:
a = 'foobar'
a.delete!('bar')
=> "foo"
a = 'foobarfoobarfoobarfoobar'
a.delete!('bar')
=> "foofoofoofoo"
這是在文檔中的位置?這看起來很簡單!你的桌子上有釘書釘按鈕嗎?請現在按下它。仍然'a''bar'] ='''有點醜。 – fyz
如果我想用正則表達式去掉'bar'的所有實例呢?那看起來怎麼樣? – fyz
你會使用'gsub'。而「有點醜」是非常主觀的。我認爲'一個''酒吧'**醜陋**,沒有語言會永遠做你的建議。 – meagar