使用Ruby将句子中每个单词的最后一个字符更改为大写字母

ems*_*son 2 ruby

我被要求编写一些Ruby代码,将句子中每个单词的最后一个字符更改为大写字母.这样的字符串:

"script to convert the last letter of every word to a capital"
Run Code Online (Sandbox Code Playgroud)

变

"scripT tO converT thE lasT letteR oF everY worD tO A capitaL"
Run Code Online (Sandbox Code Playgroud)

这是我最终使用的:

"script to convert the last letter of every word to a capital".split.map{|w|w<<w.slice!(-1).chr.upcase}.join' '
Run Code Online (Sandbox Code Playgroud)

对于那些对这里发生的事情感兴趣的人是一个解释.

split会将句子分成一个数组,默认的分隔符是一个空格,使用Ruby你不需要在这里使用括号.

将数组映射split传递给map,它打开一个块并处理数组中的每个单词(w).块切片!(S)断字的最后一个字符,并将其转换为CHR(字符不是ASCII码),然后大写upcase它.此字符现在附加<<到缺少切片的最后一个字母的单词.最后字的阵列现在加入了一起'改革句子.

x1a*_*1a4 8

这是一个快速而肮脏的正则表达式方法,肯定会以我未考虑过的方式被打破:

"the quick brown fox jumps over the lazy dog".gsub(/.\b/) { |m| m.upcase }
Run Code Online (Sandbox Code Playgroud)

即在字边界之前加上最后一个字符匹配.


sam*_*uil 5

使用 railstitleize方法,您可以:

str.reverse.titleize.reverse
Run Code Online (Sandbox Code Playgroud)