检查字符串中存在哪些字符(Ruby)

时间:2014-08-17 21:41:35

标签: ruby string

我试图创建一个检测字符串中存在哪些字符的函数。然后该函数返回一个26个字符长的字符串。根据字符是否被找到,该字符串在字符串中的字符位置将具有1或0。因此,如果找到B和Z,则函数将返回

  

01000000000000000000000001

这是我到目前为止所做的。

def convert(str)
    alpha = ("a".."z").to_a.join
    alpha.each_char do |i|
        num = 0
        (str.include? i) ? (alpha[num] = 1) : (alpha[num] = 0)
        num =+ 1
    end
    print ans
end
convert("a 345 % b ^    xxz")

但是,我在第5行仍然收到错误:

  

没有将Fixnum隐式转换为String(TypeError)

不确定如何解决这个问题。有小费吗?

2 个答案:

答案 0 :(得分:1)

您无法为字符串分配数字。使用10替换该行的"1""0"

此外,我认为您的意思是num += 1而不是num = +1

答案 1 :(得分:1)

您可以使用mapjoin

来阻止错误
def convert(str)
  ('a'..'z').map { |c| str.include?(c) ? 1 : 0 }.join
end

convert("a 345 % b ^    xxz")
#=> "11000000000000000000000101"