我试图将Ruby中的全大写字符串转换为小写字符串,但每个单词的第一个字符都是大写.例子:

将"此处我的字符串"转换为"此处我的字符串".

我知道我可以用这个.downcase方法,但这会使所有内容都小写("我的字符串在这里").我正在扫描一个文件中的所有行并进行更改,那么有没有一个正则表达式可以通过ruby来实现这一点?

谢谢

推荐答案

当我试图想出自己的方法(包括下面的参考)时,我意识到有一些非常糟糕的情况.最好使用Facets中提供的方法,即最棒的Ruby库evar:

require 'facets/string/titlecase'

class String
  def titleize
    split(/(\W)/).map(&:capitalize).join
  end
end

require 'test/unit'
class TestStringTitlecaseAndTitleize < Test::Unit::TestCase
  def setup
    @str = "i just saw \"twilight: new moon\", and man!   it's crap."
    @res = "I Just Saw \"Twilight: New Moon\", And Man!   It's Crap."
  end
  def test_that_facets_string_titlecase_works
    assert_equal @res, @str.titlecase
  end
  def test_that_my_own_broken_string_titleize_works
    assert_equal @res, @str.titleize # FAIL
  end
end

如果你想要更符合典型写作风格准则的东西(即不大写"and"之类的词),GitHub上有几个"titleize"Ruby .

Ruby相关问答推荐

如何使用另一个Ruby 中的Ruby 中的区域设置?

从同名方法调用 ruby​​ 中的方法

Rb:仅通过在 Ruby 中的类上添加 each 方法,可枚举模块是如何工作的?

Ruby - 给定一个嵌套数组的数组,如何仅比较每个嵌套数组的最后一个值来找到最大值?

仅在模块中列出方法?

查看 Savon 请求 XML 而不发送到服务器

如何在新行之间拆分字符串并保留空白行?

为什么在Ruby中用空格分隔的两个字符串连接在一起?

按键对哈希进行分组并对值求和

格式化 Ruby 的漂亮打印

用反斜杠单引号替换单引号

将哈希转换为 struct

从 Ruby 中的 URL 获取文件名的好方法是什么?

ruby module_function 与包含模块

Ruby CSV - 获取当前行/行号

获取下周一(或一周中的任何一天)的日期的 Ruby 代码

解析带有标题字段的 CSV 文件作为每行的属性

如何计算 Ruby 数组中的重复元素

判断文件名是文件夹还是文件

JavaScript Array:获取项目的范围