Ruby用空格大写第一个字符

一些规则:必须使用大写(不是upcase或任何其他表达式)

坚持以下内容:

 string = <<  -  HERE
              我喜欢炸玉米饼。 我听到
   它们味道鲜美,营养丰富

这里

我需要利用空格大写每行的第一个单词,并且无法弄清楚如何完成它:

输出需要如下所示:

              我喜欢炸玉米饼。 我听到
   它们味道鲜美,营养丰富

任何指导或帮助将不胜感激。 我甚至会指出正确的方向,而不是答案!

这是一个符合你要求的单线程:

string.gsub(/^\s*\w/) {|match| match.upcase }

我知道你说“没有万事”,但在这种情况下,它只是提升了第一个字母。 如果您对此有任何疑问,请与我们联系。

要解决您对其他答案的评论,您可以随时使用gsub! 在不创建副本的情况下将字符串变异。

 string.gsub!(/^\s*\w/){|match| match.upcase} 

这将做你想要的而不创建新的字符串。

这会有用吗?

 string = <<-HERE i love tacos. I hear they are delicious and nutritious HERE string.gsub!(/(^\s*)(\w)/) do |match| $1 << $2.capitalize end 

这尝试做的是将字符串拆分为换行符,搜索第一个字母,将其大写并重新加入片段。

这将产生:

 > I love tacos. I hear They are delicious and nutritious