Ruby 将单词替换为大写的单词
如果行的第一个单词(一个或多个)都是大写的,我想用大写的单词替换这些单词(使用ruby的Ruby 将单词替换为大写的单词,ruby,regex,gsub,Ruby,Regex,Gsub,如果行的第一个单词(一个或多个)都是大写的,我想用大写的单词替换这些单词(使用ruby的.capitalize)。例如“FOO BAR”到“FOO BAR” 我尝试了以下方法: line.gsub!(/^([A-Z ]+)/, '\1'.capitalize) 及 这两个都不起作用。有办法做到这一点吗?试试: line.gsub!(/^([A-Z ]+)/) { |w| w.capitalize } 在IRB中: require 'active_support' 'FOO bar'.gsub
.capitalize
)。例如“FOO BAR”到“FOO BAR”
我尝试了以下方法:
line.gsub!(/^([A-Z ]+)/, '\1'.capitalize)
及
这两个都不起作用。有办法做到这一点吗?试试:
line.gsub!(/^([A-Z ]+)/) { |w| w.capitalize }
在IRB中:
require 'active_support'
'FOO bar'.gsub(/^[A-Z]+/) { |w| w.capitalize }
=> "Foo bar"
或OP的版本:
'FOO bar'.gsub!(/^([A-Z ]+)/) { |w| w.capitalize }
=> "Foo bar"
对于前两个词,这既快又脏:
'FOO BAR'.gsub!(/^([A-Z ]+ [A-Z]+)/) { |w| w.capitalize }
=> "Foo bar"
您可以通过以下方式变得更漂亮:
'FOO BAR'.gsub!(/^((?<word>[A-Z]+) \g<word>)/) { |w| w.capitalize }
=> "Foo bar"
尝试:
在IRB中:
require 'active_support'
'FOO bar'.gsub(/^[A-Z]+/) { |w| w.capitalize }
=> "Foo bar"
或OP的版本:
'FOO bar'.gsub!(/^([A-Z ]+)/) { |w| w.capitalize }
=> "Foo bar"
对于前两个词,这既快又脏:
'FOO BAR'.gsub!(/^([A-Z ]+ [A-Z]+)/) { |w| w.capitalize }
=> "Foo bar"
您可以通过以下方式变得更漂亮:
'FOO BAR'.gsub!(/^((?<word>[A-Z]+) \g<word>)/) { |w| w.capitalize }
=> "Foo bar"
我不是Ruby程序员,但我可以看到您正在对字符串
\1
调用capitalize
,当然这又是\1
。您需要寻找类似于PHP的东西,它允许您通过函数运行正则表达式匹配-在本例中,大写
我不是Ruby程序员,但我可以看到您正在调用字符串大写
,\1
,当然这又是\1
。您需要寻找类似于PHP的东西,它允许您通过一个函数运行正则表达式匹配-在本例中,大写
您希望将行中的所有单词大写,对吗?
请尝试字符串#扫描:
line.scan(/\w+|\W+/).map(&:capitalize).join
你想把所有的单词都大写,对吗? 请尝试字符串#扫描:
line.scan(/\w+|\W+/).map(&:capitalize).join
这是可行的,但只适用于第一个全大写单词。您知道如何使其适用于前两个单词都是大写的情况吗?只需在[]中添加空格字符即可。他在他的例子中忘记了(?)它。我也尝试了空格,但对于第二个全大写的单词仍然不起作用。也许我在问题中的例子让它更清楚。对不起,谢谢!请注意,有了所有这些功能,您可以更简洁地执行:
my_str.gsub(/…/,&:capitalize)
此功能有效,但仅适用于第一个全大写单词。您知道如何使其适用于前两个单词都是大写的情况吗?只需在[]中添加空格字符即可。他在他的例子中忘记了(?)它。我也尝试了空格,但对于第二个全大写的单词仍然不起作用。也许我在问题中的例子让它更清楚。对不起,谢谢!请注意,使用所有这些,您可以更简洁地执行:my_str.gsub(/…/,&:capitalize)