我有一个看起来像这样的字符串:
bar = "Bar 01/12/15"
foo = "Foo02/15/87"
如何拆分这些变量,以便生成的数组包含:
bar_array = ["Bar", "01/12/15"]
foo_array = ["Foo","02/15/87"]
答案 0 :(得分:2)
r = /(?<=[[:alpha:]]) ?(?=\d)/
"Bar 01/12/15".split(r)
#=> ["Bar", "01/12/15"]
"Foo02/15/87".split(r)
#=> ["Foo", "02/15/87"]
正则表达式为
答案 1 :(得分:1)
如果你的字符串总是 dd / mm / yy 格式最后,你可以创建一个方法,从字符串中取出最后8个字符并返回两个值(剩余字符串和日期)作为数组,如下所示:
def to_array(string)
date = string[-8..-1]
[string.delete(date).strip, date]
end
to_array(bar)
#=> ["Bar", "01/12/15"]
to_array(foo)
# => ["Foo", "02/15/87"]
答案 2 :(得分:1)
鉴于提供的字符串(如示例所示):
##/##/##
格式)您可以执行以下操作:
bar.sub(/(.{8})\z/, ' \1').split
#=> ["Bar", "01/12/15"]
sub(/(.{8})\z/, ' \1')
将在日期之前添加空格split
会拆分找到空格(或更多)的字符串答案 3 :(得分:0)
正则表达式
"a,b'c d".split /\s|'|,/
# => ["a", "b", "c", "d"]
这里有关于正则表达式的一些文档
http://rubylearning.com/satishtalim/ruby_regular_expressions.html
答案 4 :(得分:0)
您的变量bar = "Bar 01/12/15"
包含空格" "
如果变量foo
也应包含foo = "Foo 02/15/87"
您可以在.split
上使用bar
而无需输入分隔符。
它将返回["Bar", "01/12/15"]
(请记住将变量bar_array
设置为等于它。)
但是,如果您有"1,2,3"
之类的字符串,则需要输入分隔符","
:"1,2,3".split(",")
才能获得["1","2","3"]
。否则,它将返回["1,2,3"]
答案 5 :(得分:0)
正则表达式如何匹配日期表格及其前面的内容:
bar = "Bar 01/12/15"
foo = "Foo02/15/87"
pattern = /^(.*?)([0-9]{2}\/[0-9]{2}\/[0-9]{2})/
bar.scan(pattern).flatten.map(&:strip)
=> ["Bar", "01/12/15"]
foo.scan(pattern).flatten.map(&:strip)
=> ["Foo", "02/15/87"]