Ruby on rails 在字符串中生成单个单词All CAPS(从数据库返回时)-rails
有没有一种方法可以使字符串中的单个单词都大写。表单正在从数据库返回该字段。例如,我想要字符串“Jane是最好的程序员”中的“Jane是最好的程序员” 编辑:在视图中:Ruby on rails 在字符串中生成单个单词All CAPS(从数据库返回时)-rails,ruby-on-rails,regex,string,Ruby On Rails,Regex,String,有没有一种方法可以使字符串中的单个单词都大写。表单正在从数据库返回该字段。例如,我想要字符串“Jane是最好的程序员”中的“Jane是最好的程序员” 编辑:在视图中:“hello”.gsub!('best','best')-下面的第一个响应-不适用于此。虽然这个问题被Stackoverflow标记为“regex”,但它是rails应用程序 (是的,如果我将“Jane是最好的程序员”保存到数据库中,并将其返回,而不使用标题或大写,我会得到“Jane是最好的程序员”。但是,这只是一个示例。在实际用例
“hello”.gsub!('best','best')
-下面的第一个响应-不适用于此。虽然这个问题被Stackoverflow标记为“regex”,但它是rails应用程序
(是的,如果我将“Jane是最好的程序员”保存到数据库中,并将其返回,而不使用标题
或大写
,我会得到“Jane是最好的程序员”。但是,这只是一个示例。在实际用例中,所有数据/字符串在保存之前都会转换为小写。我们希望将一些关键字大写以便于显示。)
titleize
给了我简是最好的程序员
大写
给了我简是最好的程序员
Jane是最好的程序员
是什么
也许,解析字符串并在视图中重新组装它?尽管我更愿意在模型层中进行。类似于%w{keyword}.upcase
的另一种选择,我怀疑是使用了一个复杂的正则表达式——我宁愿避免使用它
提前谢谢 解决这个问题的一个简单方法是用大写字母替换小写字母。您可以使用类似于下面代码的代码来完成
sentence.gsub! 'best', 'BEST'
解决这个问题的一个简单方法是用大写字母替换小写字母。您可以使用类似于下面代码的代码来完成
sentence.gsub! 'best', 'BEST'
我想你可以这样做。假设您有型号配置文件
class Profile < ActiveRecord::Base
# attributes: id, about1, about2, ... etc.
# pretty much alias about1
def sentence1
emphasize(about1)
end
private
def emphasize(sentence)
keywords = %w{best awesome great}
keywords.each do |w|
re = /\b(#{w})\b/i
if about1.match(re)
sentence.gsub!(re, w.upcase)
end
end
sentence
end
类配置文件
其中,about1
是jane是最好的程序员
,您可以使用sentence1
它既不是最漂亮的,也不是性能最好的,但它应该能用。我想你可以这样做。假设您有型号配置文件
class Profile < ActiveRecord::Base
# attributes: id, about1, about2, ... etc.
# pretty much alias about1
def sentence1
emphasize(about1)
end
private
def emphasize(sentence)
keywords = %w{best awesome great}
keywords.each do |w|
re = /\b(#{w})\b/i
if about1.match(re)
sentence.gsub!(re, w.upcase)
end
end
sentence
end
类配置文件
其中,about1
是jane是最好的程序员
,您可以使用sentence1
它既不是最漂亮的,也不是性能最好的,但它应该会起作用。为什么不找到并替换这个词(小写到大写)?为什么不找到并替换这个词(小写到大写)?这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-用大写版本的字符串替换字符串如何不能回答这个问题?仅代码块不能提供一个好的答案。请添加解释(为什么它可以解决问题,错误在哪里等等),“类似这样的东西应该可以工作”更像是一个测试某些东西的注释视图中的
返回短语jane是最好的程序员。我将编辑原始问题以注意这一点。您的建议适用于字符串,例如“hello”.gsub!('hello','hello')
,但不适用于
或“”.gsub!('hello','hello')
我尝试过的另一种选择。这是我正在寻找的一种简单的解决方案;然而,我认为它不适合我的用例。谢谢这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-用大写版本的字符串替换字符串如何不能回答这个问题?仅代码块不能提供一个好的答案。请添加解释(为什么它可以解决问题,错误在哪里等等),“类似这样的东西应该可以工作”更像是一个测试某些东西的注释视图中的
返回短语jane是最好的程序员。我将编辑原始问题以注意这一点。您的建议适用于字符串,例如“hello”.gsub!('hello','hello')
,但不适用于
或“”.gsub!('hello','hello')
我尝试过的另一种选择。这是我正在寻找的一种简单的解决方案;然而,我认为它不适合我的用例。谢谢,我认为你走对了about1
是-正如我在原始问题中编辑的-实际上是@句子。大写
-它是视图的标题,并根据调用的记录进行更改。所以(大声思考),我需要把about1
作为一个变量。我将在今天晚些时候对此进行研究,并让您知道什么是有效的。谢谢,我已经尝试了你的代码的许多变体,但没有成功。有趣的是,我甚至不能提出错误——我尝试在模型和控制器中使用代码(和变体)。这个周末我要参加一个聚会,一些经验丰富的红宝石爱好者参加了。我会让你知道我们的想法。谢谢,道格拉斯,如果你想给我发封电子邮件,我可能会帮你通过它!我的电子邮件在我的个人资料中;不过,我还是想让芝加哥Ruby聚会试一试。这是有经验的程序员喜欢的问题。我只是很惊讶没有一个内置的方法。虽然我将此作为标题字符串发布,但它也与个人的学位有关,即让电气工程师显示为EE rat