我正在尝试制作一个Ruby程序,该程序计算两个字母一起出现的次数。这就是我正在读取的文件中写的内容:

hola
chau

这就是我想要得到的:
ho;ol;la;ch;ha;au;
1;1;1;1;1;1;

我无法使其正常工作。到目前为止,这是我的代码:
file = File.read(gets.chomp)
todo = file.scan(/[a-z][a-z]/).each_with_object(Hash.new(0)) {
    |a, b| b[a] += 1
}

keys  = ''
values = ''

todo.each_key {
    |key| keys += key + ';'
}
todo.each_value {
    |value| values += value.to_s + ';'
}

puts keys
puts values

这是我得到的结果:
ho;la;ch;au;
1;1;1;1;

为什么我没有得到每个字符的组合?我应该在正则表达式中刊登什么广告,以便它可以计算字符的每个组合?

最佳答案

因为字符是重叠的,所以您需要使用前瞻来捕获重叠的字符。

(?=([a-z][a-z]))

DEMO

10-07 21:28