使用html.slim视图文件中的这段代码将名称的结尾从e
更改为ai
,它可以正常工作:
@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : w) }.join(" ")
并将此pease用于多个选项:
@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
仅替换了最后一个字符串。
如何调整以替换最后一个字符串?
答案 0 :(得分:1)
仅需最后两个字符
w.end_with?('as') ? (w.chomp(w[w.length - 2, 2]) + 'u'
请注意,w.length - 2
定位到倒数第二个字符,, 2
表示您需要两个字符,而不是一个。