首字母大写的句子

3

是否有一种方法(可能是Rails中的某个库)或一种简单的方法,可以将字符串的第一个字母大写,而不影响其余部分的大小写状态?我想使用它来大写错误消息。我期望类似于这样的结果:

"hello iPad" #=> "Hello iPad"
4个回答

3

Ruby中有一个capitalize方法,但它会将字符串的其余部分变为小写。否则,您可以编写自己的方法:

class String
  def capitalize_first
    (slice(0) || '').upcase + (slice(1..-1) || '')
  end

  def capitalize_first!
    replace(capitalize_first)
  end
end

编辑: 添加了 capitalize_first! 变体。


capitalize 是来自 Ruby,而不是 Rails。 - Reactormonk
我认为你的答案是最好的,但是太啰嗦了。 - sawa

2
相当笨拙,但它可以工作:
str = "hello IiPad"
str[0] = str[0].upcase #or .capitalize

1
你必须检查空字符串,如果运行你的代码时 str = "",程序会崩溃。 - Jean-Louis Giordano
谢谢。我现在意识到我必须对第一个字符单独处理。 - sawa

2

感谢其他回答,我意识到一些需要注意的点,并且也知道没有内置的方法。像Vitaly Zemlyansky所提示的那样,我查看了Rails中Active Support的camelize源代码,得到了一个提示:使用正则表达式。我决定使用以下内容:

sub(/./){$&.upcase}

-3

试试这个

"hello iPad".camelize

1
这将真正使字符串驼峰化。如果提供的字符串包含 some_undesrcores,它将被驼峰化为 someUnderscore - Remus Rusanu
1
不错的技巧,但这会将“hello_some_stuff”转换为“Hello someStuff”。如果您没有任何下划线,那没问题,但否则可能会产生一些令人惊讶的结果(而惊喜通常是不受欢迎的)。 - Jean-Louis Giordano
谢谢你的想法。虽然Remus和Jean指出了一个问题,但是查看camelize的源代码给了我一些提示。 - sawa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接