首页 > 解决方案 > 替换用户名末尾的几个字符串

问题描述

在 html.slim 视图文件中使用这段代码将名称的结尾从 更改eai,它工作正常:

@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : w) }.join(" ")

并将此豌豆用于多种选择:

@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : (w.end_with?('d') ? (w.chomp(w[w.length - 1]) + 'i') : (w.end_with?('as') ? (w.chomp(w[w.length - 1]) + 'u') : w))) }.join(" ")

当只需要更改最后一个字符串时,一切都很好,比如name = namai, namd = nami.

但是对于(w.end_with?('as') ? (w.chomp(w[w.length - 1]) + 'u')namas = namau来说,而不是namas = namu.

猜猜这是因为它只length - 1替换了最后一个字符串。

如何调整它以替换最后一个字符串?

标签: ruby-on-railsstringslim-lang

解决方案


只吃最后两个字符

w.end_with?('as') ? (w.chomp(w[w.length - 2, 2]) + 'u'

请注意,w.length - 2位置到倒数第二个字符,并且, 2表示您想要两个字符,而不是一个。


推荐阅读