有没有办法在字符串中生成所有CAPS中的单个单词。该字段由表单从数据库返回。例如,我想要" Jane是最好的程序员"对于字符串" jane是最好的程序员"。
编辑:在视图中:<%= @sentence.capitalize %>
"hello".gsub!('best','BEST')
- 下面的第一个回复 - 不能解决这个问题。虽然这个问题被标记为&#39;正则表达式&#39;通过Stackoverflow,它是一个rails应用程序。
(并且,是的,如果我保存&#34; Jane是最好的程序员&#34;到数据库并且在没有titleize
或capitalize
的情况下返回它,我会得到&#34; Jane是最好的程序员&#34;。但是,这只是一个例子。在实际使用案例中,所有数据/字符串在保存之前都会转换为小写。我们希望将一些关键字大写以用于显示目的。)
titleize
给了我Jane Is The Best Programmer
capitalize
给了我Jane is the best programmer
获取Jane is the BEST programmer
的解决方法是什么?
也许,解析字符串并在视图中重新组合它?虽然我宁愿在模型层中这样做。像%w{ keyword }.upcase
这样的替代方案,我怀疑是使用复杂的正则表达式 - 我宁愿避免使用。
提前致谢!
答案 0 :(得分:0)
对此的一个简单解决方案是将小写版本替换为单词的大写字母。您可以使用类似于以下代码的代码来完成它。
sentence.gsub! 'best', 'BEST'
答案 1 :(得分:0)
我想你可以做这样的事情。假设您有模型Profile
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 is the best programmer
而您使用sentence1
。
它不是最漂亮的,也不是最高效的,但它应该有效。