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在任何问题上都可以