2011-12-21 23 views
0

我是ruby的新手,我想从"a[3]"提取[ "a" , "3" ]。我使用的是以下情况:Ruby从[3]删除提取[“a”,“3”]

pin = "a[3]" 
a = Array.new 
a = pin.split(/\[/) 
if a.length == 1 
    return a 
elsif a.length == 2 
    a[1].gsub(/\]/, //) 
    return a 
else 
    raise " Error , Invalid syntax for pin #{pin}. " 
end 

我收到此错误:

t:8:in `gsub': can't convert Regexp into String (TypeError) 

我无法理解。

+0

那么你的意思是'pin =“a [3]”'而不是? – tadman 2011-12-21 20:23:48

回答

1

你为什么不随便抓你想要的东西是这样的:

pin = "a[3]" 
a = pin.scan(/[A-Za-z0-9]+/) 

# => ["a", "3"] 

这是假设你想连续的字母数字。相应地调整。

8

gsub的第二个参数需要是字符串(""),而不是正则表达式(//)。

+0

好的。感谢它现在的作品。 – caplash 2011-12-21 19:52:47

+1

@caplash您能否将答案标记为已接受? – DNNX 2011-12-22 07:56:17