将单词替换为大写单词
如果该行的第一个单词(一个或多个)都是大写字母,我想用大写单词替换这些单词(使用 ruby 的 .capitalize
)。对于例如“FOO BAR”到“Foo Bar”,
我尝试了以下操作:
line.gsub!(/^([A-Z ]+)/, '\1'.capitalize)
两者
line.gsub!(/^([A-Z ]+)/, "\\1".capitalize)
都不起作用。有办法做到这一点吗?
If the first words of the line (one or more) are all in CAPs, I would like to replace those words with the capitalized words (using ruby's .capitalize
). For e.g. "FOO BAR" to "Foo Bar"
I tried the following:
line.gsub!(/^([A-Z ]+)/, '\1'.capitalize)
and
line.gsub!(/^([A-Z ]+)/, "\\1".capitalize)
which both did not work. Is there a way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试:
在 IRB:
或 OP 的版本中:
对于前两个单词,这又快又脏:
您可以使用以下方法变得更漂亮:
当然,使用
gsub< 的
!
版本/code> 在固定字符串上不会做任何有用的事情。OP 添加了额外的限制:
Try:
In IRB:
or the OP's version:
For the first two words, this is quick and dirty:
You can get a little prettier using:
Of course, using the
!
version ofgsub
on a fixed string won't do anything useful.The OP added additional constraints:
您想将一行中的所有单词大写,对吗?
尝试使用 String#scan 代替:
You want to capitalize all words in line, correct?
Try String#scan instead:
我不是 Ruby 程序员,但我可以看到您正在对字符串
\1
调用capitalize
,这当然只是\1
> 再次。您将需要寻找类似于 PHP 的preg_replace_callback
的东西,它允许您运行正则表达式通过函数进行匹配 - 在本例中为capitalize
。I'm no Ruby programmer, but I can see that you're calling
capitalize
on the string\1
, which of course is just\1
again. You will want to look for something similar to PHP'spreg_replace_callback
that will allow you to run regex matches through a function - in this case,capitalize
.