首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析diff-lcs的输出

解析diff-lcs的输出
EN

Stack Overflow用户
提问于 2012-07-24 23:36:48
回答 1查看 343关注 0票数 0

我想知道两个字符串之间的区别,所以我使用diff-lcs来实现。但是,我在解析输出时遇到了问题。

代码语言:javascript
复制
require 'diff-lcs'

    a = 'abcdef'
    b = 'abcsef'

diffs = Diff::LCS.diff(a,b)

puts diffs.inspect

==> [[#<Diff::LCS::Change:0x0000010106dcc0 @action="-", @position=3, @element="d">, #<Diff::LCS::Change:0x0000010106db30 @action="+", @position=3, @element="s">], [#<Diff::LCS::Change:0x0000010106d360 @action="-", @position=6, @element="">]]

我只想输出字符差异,所以'd‘和's’。有没有办法从输出中提取@元素?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-25 02:05:50

字符(元素)是您可以访问的只读属性。

生成的输出是一个arrays.Each数组,第二个数组包含一个更改。第二个数组的大小为2,包括每个字符串中的变化。

我不知道您希望它有多通用,但对于这种情况,以下方法将起作用:

代码语言:javascript
复制
a = 'abcdef'
b = 'abcsef'
diffs = Diff::LCS.diff(a,b)
p diffs[0][0].element #=> d
p diffs[0][1].element #=> s

如果你有很多匹配,可能是某种循环:

代码语言:javascript
复制
diffs.each do |a|
    a.each do |b|
        puts b.to_s + ' ' + b.element
    end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11634381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档