我试图将Ruby中的全大写字符串转换为小写字符串,但每个单词的第一个字符都是大写.例子:
将"此处我的字符串"转换为"此处我的字符串".
我知道我可以用这个.downcase方法,但这会使所有内容都小写("我的字符串在这里").我正在扫描一个文件中的所有行并进行更改,那么有没有一个正则表达式可以通过ruby来实现这一点?
谢谢
我试图将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 .