RubyonRails-如何拆分字符串和数字?

RubyonRails-如何拆分字符串和数字?,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我有一个字符串“fooo2014” 我希望结果是=>“Foo Foo 2014” 有什么想法吗?这很好: puts "FooFoo2014".scan(/(\d+|[A-Z][a-z]+)/).join(' ') # => Foo Foo 2014 当然,如果您将数字和单词与大写字母分开。如果只有字母,那么只有数字: target = "FooFoo2014" match_data = target.match(/([A-Za-z]+)(\d+)/) p match_data[1] #

我有一个字符串
“fooo2014”

我希望结果是=>
“Foo Foo 2014”

有什么想法吗?

这很好:

puts "FooFoo2014".scan(/(\d+|[A-Z][a-z]+)/).join(' ')
# => Foo Foo 2014

当然,如果您将数字和单词与大写字母分开。

如果只有字母,那么只有数字:

target = "FooFoo2014"
match_data = target.match(/([A-Za-z]+)(\d+)/)
p match_data[1] # => "FooFoo"
p match_data[2] # => "2014
如果是两个单词,每个单词由一个大写字母、小写字母和数字组成:

target = "FooBar2014"
match_data = target.match(/([A-Z][a-z]+)([A-Z][a-z]+)(\d+)/)

p match_data[1] # => "Foo"
p match_data[2] # => "Bar"
p match_data[3] # => "2014
更好的正则表达式可能是可能的。

“Fooo2014”
"FooFoo2014"
.gsub(/(?<=\d)(?=\D)|(?<=\D)(?=\d)|(?<=[a-z])(?=[A-Z])/, " ")
# => "Foo Foo 2014"

.gsub(/(?您的示例有点泛化。因此,这可能是在错误的方向上猜测。尽管如此,您似乎希望重新格式化字符串:

 "FooFoo2014".scan(/^([A-Z].*)([A-Z].*\D*)(\d+)$/).flatten.join(" ")
由于
“fooo2014”
是一个对您很重要的内部结构字符串,您需要自己找到正确的正则表达式

从你的问题中,我提取了两项任务:

  • 在大写字母处拆分fofoo

    /([A-Z].*)([A-Z].*)/
    可以这样做,因为您只有标准拉丁字母

  • 把字母从数字中分开

    /(.*\D)(\D+)/
    实现了这一点

  • 在我的ruby版本中,扫描结果是一个数组。请在您的设置中验证这一点


    如果你认为正则表达式太复杂了,那么我建议你仔细研究一下ActiveSupport。这可能会对你有所帮助。

    输入总是固定的吗?从来没有FooBaaz2014?或者类似的东西?是什么让“Fooboo”变成了“Fooboo”?是大写字母吗?一分为二?每三个字母都是一个新词?