根据用户名的最后一个字母更改文本
Changing text based on the final letter of user name
在我的系统中,用户会注册他们的名字。在系统使用的自然语言中,名称根据其用途以不同方式结束,例如:
- 谁:
"name surname"
- 与谁:
"namai surnamai"
因此,我需要在某些地方更改@provider_user.name
的结尾;如果以 e
结尾,请将 e
替换为 ai
.
我的 HTML 苗条代码是:
= render partial: 'services/partials/messages/original_message', locals: { header: t('html.text.consultation_with.for_provider', name: @provider_user.name)
它从 yml 文件中获取文本并使用 @provider_user.name
。
有什么解决这个问题的建议吗?
这真的很简单,这就是我喜欢 Ruby...
的原因
class String
def replace_ends(replace, with)
end_array = self.split " "
end_array.map! do |var|
break unless var.end_with? replace
var.chomp(" ").chomp(replace) + with
end
return end_array.join " "
end
end
试试这个,简单的单行代码
@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : w) }.join(" ")
我确定,它会将 "name surname"
转换为 "namai surnamai"
。
在其他情况下...
@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : (w.end_with?('us') ? (w.chomp(w[w.length - 1]) + 'mi') : (w.end_with?('i') ? (w.chomp(w[w.length - 1]) + 'as') : w))) }.join(" ")
"name surname".gsub(/e\b/, 'ai') # "namai surnamai"
.gsub
使用正则表达式在字符串中进行搜索和替换。它是 .sub
的贪婪版本,意味着它将替换所有出现的地方。
\b
匹配任何单词边界。
在我的系统中,用户会注册他们的名字。在系统使用的自然语言中,名称根据其用途以不同方式结束,例如:
- 谁:
"name surname"
- 与谁:
"namai surnamai"
因此,我需要在某些地方更改@provider_user.name
的结尾;如果以 e
结尾,请将 e
替换为 ai
.
我的 HTML 苗条代码是:
= render partial: 'services/partials/messages/original_message', locals: { header: t('html.text.consultation_with.for_provider', name: @provider_user.name)
它从 yml 文件中获取文本并使用 @provider_user.name
。
有什么解决这个问题的建议吗?
这真的很简单,这就是我喜欢 Ruby...
的原因class String
def replace_ends(replace, with)
end_array = self.split " "
end_array.map! do |var|
break unless var.end_with? replace
var.chomp(" ").chomp(replace) + with
end
return end_array.join " "
end
end
试试这个,简单的单行代码
@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : w) }.join(" ")
我确定,它会将 "name surname"
转换为 "namai surnamai"
。
在其他情况下...
@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : (w.end_with?('us') ? (w.chomp(w[w.length - 1]) + 'mi') : (w.end_with?('i') ? (w.chomp(w[w.length - 1]) + 'as') : w))) }.join(" ")
"name surname".gsub(/e\b/, 'ai') # "namai surnamai"
.gsub
使用正则表达式在字符串中进行搜索和替换。它是 .sub
的贪婪版本,意味着它将替换所有出现的地方。
\b
匹配任何单词边界。