2010-07-09 64 views
1

我有一个字符串我想拆分:D017209D019169D019014到D017209,D019169和D019014之间逗号。简单的字符串拆分?

如果我有

a = D017209D019169D019014 
b = a.slice("D") 
puts b 

我的结果是这样的:

017209 
019169 
019014 

我缺少什么?

+0

一个字符串拆分函数将始终删除终止符。你想要以'D'开头的子串。一个正则表达式在这里是最好的,但老实说,我很少使用它们,我会让其他人提出答案,以防我犯了一个错误(没时间测试) – 2010-07-10 00:01:25

+0

一般的经验法则:当你知道你使用'split'时想要扔掉,当你知道你想保留什么时使用正则表达式。 – 2010-07-10 16:14:32

回答

5
"D017209D019169D019014".scan(/D[^D]*/) 

Scan将返回所有匹配的数组,这正是您想要的。正则表达式仅仅意味着D,接下来是零个或更多的非D。

+1

添加一个连接在逗号中加入 “D017209D019169D019014”.scan(/ D [^ D] * /)。join(“,”)将生成“D017209,DD019169,DD019014” – 2010-07-10 01:35:54

0

字符串拆分函数将始终删除终止符。你想要以'D'开头的子串。一个正则表达式将是最好这里

a.scan(/D[0-9]*/).each do |line| 
    #do stuff with each piece of data 
end 

顺便说一句,我在我的评论说,我绝对不是一个正则表达式的专家,真的连不好。所以,如果有人发现一个大的整体让我知道,但它应该与你有的输入。