Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby:在最后一个数字字符上拆分字符串_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Ruby:在最后一个数字字符上拆分字符串

Ruby on rails Ruby:在最后一个数字字符上拆分字符串,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的Ruby模型中有以下方法: 旧的: 新的: 标题可以是这样的:Level1或TrackStar 所以TrackStar应该变成TrackStar,Level1应该变成Level1,这就是为什么我要开始扫描数字 我试图将其显示为级别1。以上的工作,我只是想知道是否有一个更雄辩的解决方案试试这个: def to_s self.title.split(/(?=[0-9])/, 2).join(" ") end 拆分的第二个参数是确保像Level10这样的标题不会转换为Level10 编辑-为

我的Ruby模型中有以下方法:

旧的:

新的:

标题可以是这样的:Level1或TrackStar

所以TrackStar应该变成TrackStar,Level1应该变成Level1,这就是为什么我要开始扫描数字

我试图将其显示为级别1。以上的工作,我只是想知道是否有一个更雄辩的解决方案

试试这个:

def to_s
  self.title.split(/(?=[0-9])/, 2).join(" ")
end
拆分的第二个参数是确保像Level10这样的标题不会转换为Level10

编辑-为了在单词之间添加空格,我会使用gsub:

请确保在gsub的第二个参数中使用单引号。

尝试以下操作:

def to_s
  self.title.split(/(?=[0-9])/, 2).join(" ")
end
拆分的第二个参数是确保像Level10这样的标题不会转换为Level10

编辑-为了在单词之间添加空格,我会使用gsub:

请确保在gsub的第二个参数中使用单引号。

这样如何:

'Level1'.split(/(\d+)/).join(' ')
#=> "Level 1"
这个怎么样:

'Level1'.split(/(\d+)/).join(' ')
#=> "Level 1"

dennis的解决方案实际上返回Level1,输入Level10-为什么是[0-9]而不是\d?只是为了与最初发布的问题保持一致。不知道要拆分的第二个参数,也是:很好的答案+1对于Level10的输入,Dennis的解决方案实际上返回Level1-为什么是[0-9]而不是\d?只是为了与最初发布的问题保持一致。不知道要拆分的第二个参数,也是:很好的答案+1根据@WallyAltman的观点-如果数字有多个数字,这将无法正常工作。没错,将正则表达式修改为\d+,而不是\d。尽管它仍然不匹配上一次出现。根据@Wallyatman的观点-如果数字有多个数字,这将无法正常工作。没错,将正则表达式修改为\d+,而不是\d。尽管它仍然不能只匹配最后出现的数字。数字是否总是最后一个字符?那里总是有一个数字吗?@texasbruce-是的,最后一个字符总是最后一个数字{self.title.titlecase}在它周围没有任何原因地加引号。这可能是self.title.titlecase,或者如果您担心创建重复字符串,那么self.title.titlecase.dup。数字是否始终是最后一个字符?那里总是有一个数字吗?@texasbruce-是的,最后一个字符总是最后一个数字{self.title.titlecase}在它周围没有任何原因地加引号。这可能应该是self.title.titlecase,或者如果您担心创建重复字符串,那么应该是self.title.titlecase.dup。
'Level1'.split(/(\d+)/).join(' ')
#=> "Level 1"