# Make hashtable out of 2 strings

**URL:** <https://www.ruby-forum.com/t/make-hashtable-out-of-2-strings/138711>\
**Category:** Ruby\
**Created:** [May 27, 2008, 4:17am UTC](https://www.ruby-forum.com/t/make-hashtable-out-of-2-strings/138711 "2008-05-27T04:17:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [May 27, 2008, 4:17am UTC](https://www.ruby-forum.com/t/make-hashtable-out-of-2-strings/138711/1 "2008-05-27T04:17:23Z")

</div>

i have 2 strings, i want to take for each char in string1 the same  
indexed char in string2 and make them into a key-\>value pair.

how can i iterate a string?

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [May 27, 2008, 4:26am UTC](https://www.ruby-forum.com/t/make-hashtable-out-of-2-strings/138711/2 "2008-05-27T04:26:44Z")

</div>

On May 26, 2008, at 10:14 PM, removed\_email\_address@domain.invalid wrote:

> i have 2 strings, i want to take for each char in string1 the same  
> indexed char in string2 and make them into a key-\>value pair.
> 
> how can i iterate a string?

something like this?

> > s1 = “asdf”  
> > =\> “asdf”
> 
> > s2 = “bnmd”  
> > =\> “bnmd”
> 
> > arr = s1.split(//).zip(s2.split(//))  
> > =\> [[“a”, “b”], [“s”, “n”], [“d”, “m”], [“f”, “d”]]
> 
> > h = Hash[\*arr.flatten]  
> > =\> {“a”=\>“b”, “d”=\>“m”, “f”=\>“d”, “s”=\>“n”}

regards,

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [May 27, 2008, 4:55am UTC](https://www.ruby-forum.com/t/make-hashtable-out-of-2-strings/138711/3 "2008-05-27T04:55:59Z")

</div>

From: removed\_email\_address@domain.invalid [[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)]

# i have 2 strings, i want to take for each char in string1 the same

# indexed char in string2 and make them into a key-\>value pair.

# how can i iterate a string?

i’m currently playing w ruby1.9 now, so pls bear w me 😉

irb(main):001:0\> s1 = “asdf”  
=\> “asdf”

irb(main):002:0\> s2 = “bnmd”  
=\> “bnmd”

irb(main):004:0\> pairs = s1.each\_char.zip s2.each\_char  
=\> #Enumerable::Enumerator:0xbb69d0

i like the flexibility of enums, so you can do

irb(main):005:0\> pairs.each {|x| p x}  
[“a”, “b”]  
[“s”, “n”]  
[“d”, “m”]  
[“f”, “d”]  
=\> nil

irb(main):006:0\> pairs.map{|x|x}  
=\> [[“a”, “b”], [“s”, “n”], [“d”, “m”], [“f”, “d”]]

irb(main):014:0\> pairs.inject({}){|h,(k,v)| h[k]=v; h}  
=\> {“a”=\>“b”, “s”=\>“n”, “d”=\>“m”, “f”=\>“d”}

irb(main):029:0\> pairs.map(&:reverse)  
=\> [[“b”, “a”], [“n”, “s”], [“m”, “d”], [“d”, “f”]]

irb(main):032:0\> pairs.map(&:first).join  
=\> “asdf”

kind regards -botp
