如何分离大写和非大写单词?

时间:2014-03-25 17:08:52

标签: ruby-on-rails ruby regex

我有这种类型的字符串

str =  "\n\t\t\t\t\t\t\t\tRemovable neck strapBelt loop\n                                \n                                \n                                \n\t\t\t\t\t\t\"

想转换成

Removable neck strap Belt loop

注意strapBelt是如何分开的。

到目前为止,我已经完成了这个

 str.gsub(/\n|\t/,'').strip

给了我

 Removable neck strapBelt loop 

但无法在strapBelt之间进行分割。

2 个答案:

答案 0 :(得分:2)

使用这个:

str = str.gsub(/(?<=[a-z])([A-Z])/, ' \\1')

此处检查是否有任何大写字母[A-Z]正好位于较小的字母[a-z]之后(使用正向后方(?<=[a-z]))。如果是,则将其替换为空格和大写单词(在\\1中作为捕获的组)本身。

答案 1 :(得分:2)

str.gsub(/([a-z])([A-Z])/, '\1 \2').strip