Html 根据用户名的最后一个字母更改文本
在我的系统中,用户将注册他们的姓名。在与系统一起使用的自然语言中,名称的结尾因其用途而异,例如:Html 根据用户名的最后一个字母更改文本,html,ruby-on-rails,ruby,yaml,slim,Html,Ruby On Rails,Ruby,Yaml,Slim,在我的系统中,用户将注册他们的姓名。在与系统一起使用的自然语言中,名称的结尾因其用途而异,例如: 谁:“姓名姓氏” 与世卫组织合作:“namai surnamai” 因此,我需要在某些地方更改@provider\u user.name的结尾;如果以e结尾,则将e替换为ai 我的HTML slim代码是: = render partial: 'services/partials/messages/original_message', locals: { header: t('html.text
- 谁:
“姓名姓氏”
- 与世卫组织合作:
“namai surnamai”
@provider\u user.name
的结尾;如果以e
结尾,则将e
替换为ai
我的HTML slim代码是:
= render partial: 'services/partials/messages/original_message', locals: { header: t('html.text.consultation_with.for_provider', name: @provider_user.name)
它从yml文件中获取文本并使用@provider\u 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
这真的很简单,这就是为什么我喜欢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(" ")
我确信,它会将“姓名姓氏”
转换为“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(" ")
试试这个简单的单行代码
@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : w) }.join(" ")
我确信,它会将“姓名姓氏”
转换为“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(" ")
.gsub
使用正则表达式在字符串中搜索和替换。它是贪婪版本的.sub
,意味着它将替换所有出现的内容
\b
匹配任何单词边界
.gsub
使用正则表达式在字符串中搜索和替换。它是贪婪版本的.sub
,意味着它将替换所有出现的内容
\b
匹配任何单词边界 string.sub(/e$/,'ai')
将用ai
替换尾随e
string.sub(/e$/,'ai')
将用ai
替换尾随e
。谢谢,这很有效。附加问题-如何在同一记录上扩展更多选项,如“e=ai,us=mi,i=as”?您能建议如何将其用于多个选项吗?这将对我有很大帮助。我认为您最好提出一个新问题,因为它与您原来的问题有很大不同谢谢,创建了一个新问题:谢谢,成功了。附加问题-如何在同一记录中扩展更多选项,如“e=ai,us=mi,i=as”?您能建议如何将其用于多个选项吗?这将对我有很大帮助。我认为您最好提出一个新问题,因为它与您原来的问题有很大不同谢谢,创建了一个新问题:谢谢您,Vijay,这也奏效了。附加问题-如何在同一记录上扩展更多选项,如“e=ai,us=mi,i=as”?感谢您的回答,但多个选项的解决方案似乎不起作用。当它尝试第二个选项(在我的情况下,用户名以“us”结尾)时,会抛出“出错”错误嗨,Vijay,你能检查代码中的多个选项吗。它看起来很方便,但似乎不起作用。谢谢你,维杰,这也行。附加问题-如何在同一记录上扩展更多选项,如“e=ai,us=mi,i=as”?感谢您的回答,但多个选项的解决方案似乎不起作用。当它尝试第二个选项(在我的情况下,用户名以“us”结尾)时,会抛出“出错”错误嗨,Vijay,你能检查代码中的多个选项吗。它看起来很方便,但似乎不起作用。感谢您尝试此选项。你建议我在哪个文件中定义它?我不知道,但是如果你在你将要放入的文件中定义它,它不会破坏String类。Imma只是想让它替换所有的端点。使它正常工作应该像var=var.replace_end“11”,“12”顺便说一句,我已经在jruby中删除了它,所以hmu在任何问题上都想尝试这个选项。你建议我在哪个文件中定义它?我不知道,但是如果你在你将要放入的文件中定义它,它不会破坏String类。Imma只是想让它替换所有的端点。使它正常工作应该像var=var.replace_end“11”,“12”顺便说一句,我已经在jruby中对它进行了调试,所以hmu在任何问题上都可以