将数组中的每个单词大写
Capitalize each word in an array
我正在尝试将一个数组大写,其中一些字符串由多个单词组成,例如:
array = ["the dog", "the cat", "new york"]
我尝试使用:
array.map(&:capitalize)
但这只是将每个字符串的第一个字母大写。有什么建议么? (我对编码很陌生^_^)
我想要的输出是:
["The Dog", "The Cat", "New York"]
您可以为数组的每个字符串使用类似这样的内容:
string.split(' ').map(&:capitalize).join(' ')
The documentation for String#capitalise
说:
Returns a copy of str with the first character converted to uppercase and the remainder to lowercase.
那不是你想要做的。所以你需要写一些自定义的东西。
例如:
array.map { |string| string.gsub(/\b[a-z]/, &:upcase) }
我不清楚 if/how 您打算处理其他输入,例如 all-caps,或带连字符的单词,或多行,...但是如果您的要求变得更详细,那么您可能需要扩展此实现。
或者,我更愿意使用 Ruby#gsub 并使它更像是一个对象,它可以每隔一段时间 reusable
。但在我们开始之前,您需要阅读以下 Ruby 的字符串方法:
- String#gsub Method
- String#capitalize Method
- Read this blog too to have a view of how you can use gsub
我相信 capitalize
和 upcase
方法可以使用,您将在下面的解决方案中看到我是如何使用它的。这将处理您的数组中有驼峰大小写以及连字符的额外情况:
# frozen_string_literal: true
def converter(string)
string.capitalize.gsub(/\b[a-z]/, &:upcase)
end
array_name = ['the Dog', 'the cat', 'new york', 'SlACKoVeRFLoW', 'OlAoluwa-Afolabi']
print array_name.map(&method(:converter))
如您所见,我稍微更改了数组。我会建议你使用 string with single-quotes (i.e '')
并使用 double-quotes (i.e " ") when you want to do string concatenation
.
注:
- 我相信我的解决方案可以进一步扩展。可以对其进行审查以适应各种生产力和边缘情况。所以你可以找到这样的数组并用它进行测试,并进一步扩展解决方案。
- 我用的是Ruby2.7.1
您可以使用:
array.map(&:upcase)
我正在尝试将一个数组大写,其中一些字符串由多个单词组成,例如:
array = ["the dog", "the cat", "new york"]
我尝试使用:
array.map(&:capitalize)
但这只是将每个字符串的第一个字母大写。有什么建议么? (我对编码很陌生^_^)
我想要的输出是:
["The Dog", "The Cat", "New York"]
您可以为数组的每个字符串使用类似这样的内容:
string.split(' ').map(&:capitalize).join(' ')
The documentation for String#capitalise
说:
Returns a copy of str with the first character converted to uppercase and the remainder to lowercase.
那不是你想要做的。所以你需要写一些自定义的东西。
例如:
array.map { |string| string.gsub(/\b[a-z]/, &:upcase) }
我不清楚 if/how 您打算处理其他输入,例如 all-caps,或带连字符的单词,或多行,...但是如果您的要求变得更详细,那么您可能需要扩展此实现。
或者,我更愿意使用 Ruby#gsub 并使它更像是一个对象,它可以每隔一段时间 reusable
。但在我们开始之前,您需要阅读以下 Ruby 的字符串方法:
- String#gsub Method
- String#capitalize Method
- Read this blog too to have a view of how you can use gsub
我相信 capitalize
和 upcase
方法可以使用,您将在下面的解决方案中看到我是如何使用它的。这将处理您的数组中有驼峰大小写以及连字符的额外情况:
# frozen_string_literal: true
def converter(string)
string.capitalize.gsub(/\b[a-z]/, &:upcase)
end
array_name = ['the Dog', 'the cat', 'new york', 'SlACKoVeRFLoW', 'OlAoluwa-Afolabi']
print array_name.map(&method(:converter))
如您所见,我稍微更改了数组。我会建议你使用 string with single-quotes (i.e '')
并使用 double-quotes (i.e " ") when you want to do string concatenation
.
注:
- 我相信我的解决方案可以进一步扩展。可以对其进行审查以适应各种生产力和边缘情况。所以你可以找到这样的数组并用它进行测试,并进一步扩展解决方案。
- 我用的是Ruby2.7.1
您可以使用:
array.map(&:upcase)