如何大写字符串中每个单词的首字母

kas*_*hif 13 ruby rubygems ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

如何在Ruby on Rails中将字符串中每个世界的第一个字母大写:

"goyette-xyz-is wide road".titleize returns "Goyette Xyz Is Wide Road".
Run Code Online (Sandbox Code Playgroud)

我希望输出像:

"goyette-xyz is wide road".SOME-FUNCTION should return "Goyette-xyz-is Wide Road".
Run Code Online (Sandbox Code Playgroud)

titleize删除下划线和连字符,但我想将其保留在字符串中.

MZa*_*oza 42

你可以使用.titleize 这样的"i want to make the first letter of each work into a cap".titleize

你可以从apidocks 了解更多关于标题化的信息

标题化(单词)公共

将所有单词大写并替换字符串中的某些字符以创建更好看的标题.titleize用于创建漂亮的输出.它不用于Rails内部.

titleize也像titlecase一样别名.

例子:

"man from the boondocks".titleize   # => "Man From The Boondocks"
"x-men: the last stand".titleize    # => "X Men: The Last Stand"
"TheManWithoutAPast".titleize       # => "The Man Without A Past"
"raiders_of_the_lost_ark".titleize  # => "Raiders Of The Lost Ark"
Run Code Online (Sandbox Code Playgroud)

这种现实如何运作

# File activesupport/lib/active_support/inflector/methods.rb, line 115
def titleize(word)
  humanize(underscore(word)).gsub(/\b('?[a-z])/) { $1.capitalize }
end
Run Code Online (Sandbox Code Playgroud)

实际上在作品中保留" - "我们可以像这样在字符串类中添加一个新方法.

# ./lib/core_ext/string.rb
class String
  #"goyette-xyz-is wide road".titleize_with_dashes#=> "Goyette-xyz-is Wide Road"
  def titleize_with_dashes
    humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 虽然很好地解释了标题化如何工作,但实际上并没有回答这个问题:如何在保持破折号的同时进行标题化. (4认同)

Mar*_*pka 6

您可以自己实施适当的方法:

class String
  def my_titleize
    split.map(&:capitalize).join(' ')
  end
end

"goyette-xyz-is wide road".my_titleize
#=> "Goyette-xyz-is Wide Road"
Run Code Online (Sandbox Code Playgroud)