7

我是 Ruby 的新手,并且一直在阅读 Neighborly 先生的 Humble Little Ruby 指南。在此过程中,代码示例中出现了一些拼写错误,但我一直设法找出问题所在并随后修复它 - 直到现在!

这真的很基本,但我无法在 Mac OS X (Snow Leopard) 上使用以下示例:

gone = "Got gone fool!"
puts "Original: " + gone
gone.delete!("o", "r-v")
puts "deleted: " + gone

我期待的输出是:

Original: Got gone fool!
deleted: G gne fl!

我实际得到的输出是:

Original: Got gone fool!
deleted: Got gone fool!

删除!方法似乎没有任何效果。

任何人都可以解释这里出了什么问题吗?:-\

4

3 回答 3

11

String.delete方法(在此处记录)将其参数视为数组,然后根据其数组的交集删除字符。

两个数组的交集是两个数组共有的所有字符。所以你原来的删除gone.delete!("o", "r-v")会变成

gone.delete ['o'] & ['r','s','t','u','v']

两个数组中都没有字符,因此删除将得到一个空数组,因此不会删除任何字符。

于 2010-04-25T10:11:57.130 回答
2

我变了

gone.delete!("o", "r-v")

gone.delete!("or-v")

它工作正常。

于 2010-04-25T07:46:55.023 回答
1

您使用gsub 之类的不同方式获得相同的 o/p

puts "deleted: " + gone.gsub('o', '')

o/p

deleted: Got gone fool!
于 2010-04-25T07:25:59.710 回答