2011-04-06 23 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