簡體   English   中英

如何在ruby中比較數組和哈希中的鍵?

[英]How to compare array with keys in a hash in ruby?

我正在構建一個簡單的加密器,以用ruby加密字符串。

cipher = {"a" => "6", "b" => "$", "c" => "X"...}
key_word = "secret"
key_word.split(//)
=> ["s", "e", "c", "r", "e", "t"]

如何比較key_word字符和密碼哈希中的密鑰並返回它們?

您可以使用Rexexp.unionString#gsub的哈希參數版本來實現:

encrypted = key_word.gsub(Regexp.union(cipher.keys), cipher)

String#gsub的一種形式以哈希作為參數:

encrypted = key_word.gsub(/./, cipher)

因此,只需匹配每個字符並將其替換為cipher值即可。 如果cipher沒有與該字符相等的密鑰,則該字符保持不變。

您可以執行以下操作:

cipher = {"a" => "6", "b" => "$", "c" => "X"}

'abc'.tr(cipher.keys.join, cipher.values.join)
#=> "6$X"

或使用split and join(可能會慢很多):

'abc'.each_char.map { |char| cipher[char] }.join
#=> "6$X"

就這么簡單:

ciper.values_at(*key_word.split(//)).join

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM