替换用户名末尾的几个字符串
Replacing few strings at the end of a user name
在 html.slim 查看文件中使用这段代码将名称的结尾从 e
更改为 ai
,并且工作正常:
@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
只替换了最后一个字符串。
如何调整以替换最后一个字符串?
只用最后两个字符就可以了
w.end_with?('as') ? (w.chomp(w[w.length - 2, 2]) + 'u'
请注意,w.length - 2
定位到倒数第二个字符,, 2
表示您需要两个字符,而不是一个。
在 html.slim 查看文件中使用这段代码将名称的结尾从 e
更改为 ai
,并且工作正常:
@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
只替换了最后一个字符串。
如何调整以替换最后一个字符串?
只用最后两个字符就可以了
w.end_with?('as') ? (w.chomp(w[w.length - 2, 2]) + 'u'
请注意,w.length - 2
定位到倒数第二个字符,, 2
表示您需要两个字符,而不是一个。