Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在字符串中生成单个单词All CAPS(从数据库返回时)-rails_Ruby On Rails_Regex_String - Fatal编程技术网

Ruby on rails 在字符串中生成单个单词All CAPS(从数据库返回时)-rails

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是最好的程序员”。但是,这只是一个示例。在实际用例

有没有一种方法可以使字符串中的单个单词都大写。表单正在从数据库返回该字段。例如,我想要字符串“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