ruby - 使用 Ruby 将大写字符串转换为标题大小写

标签 ruby string

我正在尝试将 Ruby 中的全大写字符串转换为小写字符串,但每个单词的第一个字符都是大写。示例:

将“我的字符串在这里”转换为“我的字符串在这里”。

我知道我可以使用 .downcase 方法,但这会使所有内容都变成小写(“我的字符串在这里”)。我正在扫描文件中的所有行并进行此更改,那么是否有可以通过 ruby​​ 使用的正则表达式来实现此目的?

谢谢!

最佳答案

如果您正在使用 Rails(您真正需要的只是 ActiveSupport,它是 Rails 的一部分),您可以使用 titleize:

"MY STRING HERE".titleize
# => "My String Here"

如果您使用普通 Ruby 但不介意加载少量 ActiveSupport,您可以先要求它:

require 'active_support/core_ext/string/inflections'
# => true
"MY STRING HERE".titleize
# => "My String Here"

N.B. 默认情况下,titleize 不能很好地处理首字母缩略词,会将 camelCaseStrings 拆分为单独的单词。这可能是可取的,也可能不是可取的:

"Always use SSL on your iPhone".titleize
# => "Always Use Ssl On Your I Phone"

您可以(部分)通过添加“首字母缩略词”来解决此问题:

require 'active_support/core_ext/string/inflections' # If not using Rails
ActiveSupport::Inflector.inflections do |inflect|
  inflect.acronym 'SSL'
  inflect.acronym 'iPhone'
end
"Always use SSL on your iPhone".titleize
# => "Always Use SSL On Your IPhone"

对于那些说英式英语的人(或者努力拼写 titleize 的人),没有 .titleise 别名,但您可以使用 .titlecase 代替。

关于ruby - 使用 Ruby 将大写字符串转换为标题大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1791639/

相关文章:

ruby - ruby 在哪里用作脚本引擎?

c++ - 反转字符串中的每个单词(应该处理空格)

java - 在java中对字符串进行排序

ruby-on-rails - 如何在 ruby​​ 测试中写出三个变量中至少有一个为空?

ruby-on-rails - Action 邮件程序不发送/接收电子邮件 rails 5

Css 脉冲动画不起作用

java - 如果用户输入了字符/字符串而不是数字,如何询问用户是否要重新启动程序?

c++ - 错误在哪里?显示字符串 C++ Vigenere 密码

c++ - 使用 strtok 从输入字符串中获取某些字符串

ruby-on-rails - 在 Rails 中创建一个管理目录