ruby – 计算两个字母一起出现的次数

我正在尝试制作一个 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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...