首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将所有单词的首字母大写,并保持已大写

将所有单词的首字母大写,并保持已大写
EN

Stack Overflow用户
提问于 2015-07-23 00:59:30
回答 3查看 1.3K关注 0票数 6

使用rails 4,并且在这方面找不到文档。我想用一个字符串把每个单词的第一个字母大写起来,但保留已经大写的字母。

我希望获得以下产出:

代码语言:javascript
复制
how far is McDonald's from here? => How Far Is McDonald's From Here?

MDMA is also known as molly => MDMA Is Also Known As Molly

i drive a BMW => I Drive A BMW

我原以为.titleize会这么做,但那会把BMW变成Bmw。谢谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-23 01:32:21

您可以尝试以下方法:

代码语言:javascript
复制
a.split.map{|x| x.slice(0, 1).capitalize + x.slice(1..-1)}.join(' ')
# or
a.split.map{|x| x[0].upcase + x[1..-1]}.join(' ')
代码语言:javascript
复制
#=> ["MDMA Is Also Known As Molly",
     "How Far Is McDonald's From Here?",
     "I Drive A BMW"]

Demonstration

票数 7
EN

Stack Overflow用户

发布于 2015-07-23 01:22:24

您可以这样做一个自定义方法:

代码语言:javascript
复制
string = "your string IS here"
output = []
string.split(' ').each do |word|
  if word =~ /[A-Z]/
    output << word
  else
    output << word.capitalize
  end
end
output.join(' ')

当然,这不会改变像"tEST“或"tEst”这样的单词,因为其中至少有一个大写字母。

票数 1
EN

Stack Overflow用户

发布于 2020-09-13 19:03:46

仅将第一个字母大写,同时保留现有大写:

代码语言:javascript
复制
your_string.then { |s| s[0].upcase + s[1..-1] }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31576504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档