我有一个字符串,它看起来像这样定义分割字符串:如何在没有分隔符
bar = "Bar 01/12/15"
foo = "Foo02/15/87"
哪有分割这些变量,这样导致数组包含:
bar_array = ["Bar", "01/12/15"]
foo_array = ["Foo","02/15/87"]
我有一个字符串,它看起来像这样定义分割字符串:如何在没有分隔符
bar = "Bar 01/12/15"
foo = "Foo02/15/87"
哪有分割这些变量,这样导致数组包含:
bar_array = ["Bar", "01/12/15"]
foo_array = ["Foo","02/15/87"]
r = /(?<=[[:alpha:]]) ?(?=\d)/
"Bar 01/12/15".split(r)
#=> ["Bar", "01/12/15"]
"Foo02/15/87".split(r)
#=> ["Foo", "02/15/87"]
正则表达式的正回顾后读取
正则表达式的工作
"a,b'c d".split /\s|'|,/
# => ["a", "b", "c", "d"]
这是关于正则表达式的一些文档
http://rubylearning.com/satishtalim/ruby_regular_expressions.html
如果字符串总是有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"]
你的可变bar = "Bar 01/12/15"
包括空间" "
如果杂物ble foo
也应包含一个空格foo = "Foo 02/15/87"
您可以在bar
上使用.split
而不输入分隔符。
它将返回["Bar", "01/12/15"]
(记得设置你的变量bar_array
等于它。)
不过,如果你有一个字符串像"1,2,3"
,你需要输入分隔符","
:"1,2,3".split(",")
为了得到["1","2","3"]
。否则,它将返回["1,2,3"]
鉴于提供的字符串(如你的例子):
##/##/##
格式)你可以做到以下几点:
bar.sub(/(.{8})\z/, ' \1').split
#=> ["Bar", "01/12/15"]
sub(/(.{8})\z/, ' \1')
将日期前添加一个空格split
将分裂找到空格(或更多)的字符串怎么样一个正则表达式匹配的日期格式所当收到:
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"]
您可以删除任何不需要的空格(如'“Bar”'),并添加'.map(&:strip)'。 – Gerry