Hi,
I'm pretty new to Ruby, and I've been trying to figure out the best
way to do this with little luck.
I have an array that is all strings, and I need to count, for each
string in the array, how many times some substring appears in it.
So, for example, my array is ["aaa", "aab", "abb", "bbb"] and I want
to return a new array that tells me how many times "a" appears: [3, 2,
1, 0]
Can anyone point me in the right direction with this?
Thanks!
unknown wrote:
Hi,
I'm pretty new to Ruby, and I've been trying to figure out the best
way to do this with little luck.
I have an array that is all strings, and I need to count, for each
string in the array, how many times some substring appears in it.
So, for example, my array is ["aaa", "aab", "abb", "bbb"] and I want
to return a new array that tells me how many times "a" appears: [3, 2,
1, 0]
Can anyone point me in the right direction with this?
Thanks!
Sounds like greping !
["aaa", "aab", "abb", "bbb"].grep ....half of the answer.
···
--
Posted via http://www.ruby-forum.com/\ .
F_Senault
(F. Senault)
10 February 2009 22:08
4
So, for example, my array is ["aaa", "aab", "abb", "bbb"] and I want
to return a new array that tells me how many times "a" appears: [3, 2,
1, 0]
When you need to map elements of an array to another array, the method
to use is, no surprise here, map (a/k/a collect).
Now, finding the number occurences of a string inside another one can be
done in a few ways, depending on what you mean exactly. Scan is one :
[ "aaa", "aab", "abb", "bbb" ].map { |x| x.scan(/a/).length }
=> [3, 2, 1, 0]
Fred
···
Le 10 février 2009 à 22:51, shrouded.shoyu@gmail.com a écrit :
--
Perl already has _bless_, and we know what it does... [it] should also
have _smite_, and we know what it should do, too. If more languages had
_smite_ implemented, the remaining programmers would be better than the
current average. (Mike Andrews in the SDM)
Looks like a job for collect:
irb(main):008:0> a = ["aaa", "aab", "abb", "bbb"]
=> ["aaa", "aab", "abb", "bbb"]
irb(main):009:0> a.collect {|v| v.scan(/a/).size}
=> [3, 2, 1, 0]
···
shrouded.shoyu@gmail.com wrote:
Hi,
I'm pretty new to Ruby, and I've been trying to figure out the best
way to do this with little luck.
I have an array that is all strings, and I need to count, for each
string in the array, how many times some substring appears in it.
So, for example, my array is ["aaa", "aab", "abb", "bbb"] and I want
to return a new array that tells me how many times "a" appears: [3, 2,
1, 0]
Can anyone point me in the right direction with this?
Thanks!
--
RMagick: http://rmagick.rubyforge.org/