我需要取两个字符串,比较它们,并打印它们之间的差异.
所以说我有:
teamOne = "Billy, Frankie, Stevie, John"
teamTwo = "Billy, Frankie, Stevie"
$ teamOne.eql? teamTwo
=> false
Run Code Online (Sandbox Code Playgroud)
我想说"如果这两个字符串不相等,则打印它们之间的不同之处.在这种情况下,我只是想打印"John".
Zac*_*ley 16
到目前为止,所有解决方案都忽略了第二个阵列也可以具有第一个阵列不具有的元素的事实.Chuck指出了一个修复(参见其他帖子的评论),但是如果你使用集合,有一个更优雅的解决方案:
require 'set'
teamOne = "Billy, Frankie, Stevie, John"
teamTwo = "Billy, Frankie, Stevie, Zach"
teamOneSet = teamOne.split(', ').to_set
teamTwoSet = teamTwo.split(', ').to_set
teamOneSet ^ teamTwoSet # => #<Set: {"John", "Zach"}>
Run Code Online (Sandbox Code Playgroud)
如果需要,可以将该集转换回数组.
如果您要比较的真实字符串与您提供的字符串相似,那么这应该有效:
teamOneArr = teamOne.split(", ")
=> [“比利”,“弗兰基”,史蒂维”,“约翰”]
teamTwoArr = teamTwo.split(", ")
=> [“比利”,“弗兰基”,史蒂维”]
teamOneArr - teamTwoArr
=> [“约翰”]
简单的解决方案:
def compare(a, b)
diff = a.split(', ') - b.split(', ')
if diff === [] // a and b are the same
true
else
diff
end
end
Run Code Online (Sandbox Code Playgroud)
当然,这只适用于您的字符串包含逗号分隔值的情况,但这可以根据您的情况进行调整。
| 归档时间: |
|
| 查看次数: |
16447 次 |
| 最近记录: |