Birden fazla tuşa sahip bir karma veriye ve karmada hiçbiri veya anahtarlardan birini içeren bir dizeye sahibim. Bir dizgenin bir karede herhangi bir anahtar içerip içermediğini ve içerdiği anahtarın değerini döndürüp döndürmediğini kontrol edin
h = {"k1"=>"v1", "k2"=>"v2", "k3"=>"v3"}
s = "this is an example string that might occur with a key somewhere in the string k1(with special characters like (^&*$#@!^&&*))"
Ne
s
h
anahtarlardan herhangi birine içerir ve eğer olursa, içerdiği bu anahtarın değerini dönerseniz kontrol etmenin en iyi yolu olurdu? Örneğin,
h
ve
s
'un yukarıdaki örnekleri için, çıktı
v1
olmalıdır.
Düzenleme: Yalnızca dize kullanıcı tanımlı olur. Karma her zaman aynı olacaktır. güvenliği için Regexp#escape kullanarak önerdi
h[s.match(/#{h.keys.join('|')}/).to_s]
# => "v1"
Veya Amadan olarak:
Üçüncü seçeneği gerçekten seviyorum - Teşekkürler! – Sid
Bir şekilde cevabınızı daha önce kaçırdım. –