Ruby on rails Ruby:在最后一个数字字符上拆分字符串
我的Ruby模型中有以下方法: 旧的: 新的: 标题可以是这样的:Level1或TrackStar 所以TrackStar应该变成TrackStar,Level1应该变成Level1,这就是为什么我要开始扫描数字 我试图将其显示为级别1。以上的工作,我只是想知道是否有一个更雄辩的解决方案试试这个: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 编辑-为
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"