我想在每个字符串中的字符中使用无顺序对ruby中的字符串进行哈希处理,例如我希望所有字谜都具有相同的哈希值。
这可能吗?
答案 0 :(得分:1)
怎么样:
require 'digest'
string = "MySuperSampleString"
sorted = string.chars.sort.join
p sorted
# => => "MSSSaeegilmnpprrtuy"
Digest::MD5.hexdigest(sorted)
# => "ef86bea3ade82ae7bf0409952bc83fd7"
chars
"分裂"字符串到字母sort
对字母数组进行排序join
将字母数组连接成一个字符串希望有所帮助!
答案 1 :(得分:0)
如果用例实际上是用于字谜,您可能还想使用.downcase
和.gsub(/\s+/, "")
,以便Torchwood == Doctor Who。即:
string.downcase.gsub(/\s+/,"").chars.sort.join
答案 2 :(得分:0)
是的,可以使用group_by。只需一行代码。 :)
实施例
words = ['demo', 'none', 'tied', 'evil', 'dome', 'mode', 'live',
'fowl', 'veil', 'wolf', 'diet', 'vile', 'edit', 'tide',
'flow', 'neon']
groups = words.group_by { |word| word.split('').sort }
返回:
{[“d”,“e”,“m”,“o”] => [“demo”,“dome”,“mode”],[“e”,“n”,“n” ,“o”] => [“none”,“neon”],[“d”,“e”,“i”,“t”] => [“捆绑”,“饮食”,“编辑” ,“潮”,[“e”,“我”,“l”,“v”] => [“邪恶”,“活着”,“面纱”,“邪恶”],[“f”,“ l“,”o“,”w“] => [”fowl“,”wolf“,”flow“]}
groups.each { |x, y| p y }
返回:
[“demo”,“dome”,“mode”]
[“none”,“neon”]
[“捆绑”,“饮食”,“编辑”,“潮”]
[“邪恶”,“活着”,“面纱”,“卑鄙”]
[“fowl”,“狼”,“流”]