我是 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!
删除!方法似乎没有任何效果。
谁能解释这里出了什么问题? :-\
最佳答案
String.delete
方法 (Documented here) 将其参数视为数组,然后根据其数组的 交集 删除字符。
两个数组的交集是两个数组共有的所有字符。因此,您对 gone.delete!("o", "r-v")
的原始删除将变为
gone.delete ['o'] & ['r','s','t','u','v']
两个数组中都没有字符,因此删除会得到一个空数组,因此不会删除任何字符。
关于Ruby 删除方法(字符串操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707469/