除了第一个字符外的单词字样

MMa*_*gun 1 ruby string

该函数.capitalize将字符串的第一个字符设置为upcase,并将所有其他字符设置为downcase.

大写字符串的每个单词

"my Name is MARC".split(" ").map{|word| word.capitalize}.join(" ")
# => "My Name Is Marc"
Run Code Online (Sandbox Code Playgroud)

我需要一个类似于similair的函数,我可以在其中所有字符进行downcase,保留第一个字符不变.所以除了第一个字母保持不变之外,每个字都会掉下来.

"my Name is MARC".some_function
# => "my Name is Marc"
Run Code Online (Sandbox Code Playgroud)

mde*_*tis 7

高级正则表达式:正向后观

"My name is MARC".gsub(/(?<=\w)\w+/) { |s| s.downcase }
#=> "My name is Marc"
Run Code Online (Sandbox Code Playgroud)

甚至更短(由@falsetru建议):

"My name is MARC".gsub /(?<=\w)\w+/, &:downcase
#=> "My name is Marc"
Run Code Online (Sandbox Code Playgroud)

  • +1.你可以传递`&:downcase`而不是块:`"我的名字是MARC".gsub(/(?<=\w)\ w + /,&:downcase)` (3认同)

fal*_*tru 6

使用正则表达式(String#gsub):

"My name is MARC".gsub(/\w+/) { |x| x[0] + x[1..-1].downcase }
# => "My name is Marc"
Run Code Online (Sandbox Code Playgroud)
x[0]: To keep the case of the first letter of each word.
x[1..-1].downcase: To change the case (excpet the first letter)
Run Code Online (Sandbox Code Playgroud)