2011-04-06 26 views
1

我期待在Ruby的更換:http://www.ruby-doc.org/core/classes/String.html#M001144Ruby的替換工作如何?

它似乎沒有道理給我,你叫替換它取代整個字符串。

我期待:

replace(old_value, new_value) 

就是我要找GSUB呢?

替換似乎與其他大多數語言不同。

+0

我已經標記了-1因爲你已經得到了答案,你已經知道API文檔在哪裏,顯然,你甚至知道如何閱讀它們。那麼問題是什麼?這不是標題所說的,「Ruby如何取代工作?」問題可能是「我真的需要一個簡單的替換正則表達式嗎?」或者...不確定。 – 2011-04-06 02:41:47

+1

+1,因爲我認爲它不值得讚揚。這不是一個不明確的問題,它不是垃圾郵件,它不是無關緊要的。 – 2011-04-06 02:43:01

回答

3

我同意replace通常用作某種模式取代其他語言,但Ruby是不同的:)

是的,你是想GSUB的:

ruby-1.9.2-p136 :001 > "Hello World!".gsub("World", "Earth") 
=> "Hello Earth!" 

有一點要注意是字符串#替換可能看起來無足輕重,但它確實消除了「污染」。您可以閱讀更多內容對象here.

0

是的,它是gsub,它取自awk語法。我猜replace代表字符串的內部表示,因爲根據文檔,被污染的東西也被刪除了。

2

我想你覺得replace沒有意義的原因是因爲有分配運算符=(與gsub沒有多大關係)。

重要的一點是String實例是可變對象。通過使用replace,您可以更改字符串的內容,同時保留其身份作爲對象。比較:

a = 'Hello' # => 'Hello' 
a.object_id # => 84793190 

a.replace('World') # => 'World' 
a.object_id # => 84793190 

a = 'World' # => 'World' 
a.object_id # => 84768100 

請參閱replace沒有改變String對象的ID,而簡單的任務做了更改。這種差異有一些後果。例如,假設您爲字符串實例分配了一些實例變量。通過replace,該信息將被保留,但如果您只將相同的變量分配給不同的字符串,則所有信息都將消失。

+0

好吧,現在我明白了,謝謝! – Blankman 2011-04-06 03:10:35