ruby / regex得到每个单词的第一个字母

时间:2014-05-07 01:58:19

标签: ruby regex

我希望将每个单词的第一个字母放在一起,使"I need help"之类的内容变为"Inh"。我想把一切都关掉,然​​后从那里开始,或者马上抓住每个第一个字母。

4 个答案:

答案 0 :(得分:16)

您可以在这里一起使用拆分地图加入

string = 'I need help'
result = string.split.map(&:first).join
puts result  #=> "Inh"

答案 1 :(得分:1)

使用正则表达式的替代解决方案

string = 'I need help'
result = string.scan(/(\A\w|(?<=\s)\w)/).flatten.join

puts result

这基本上是说“寻找第一个字母或直接以空格开头的任何字母”。 scan函数返回匹配数组的数组,这些数组被展平(制成一个数组)并连接(制成一个字符串)。

答案 2 :(得分:1)

string = 'I need help'
result = string.split.map(&:chr).join
puts result

http://ruby-doc.org/core-2.0/String.html#method-i-chr

答案 3 :(得分:1)

正则表达式如何?在这里使用split方法将重点放在您不需要解决此问题的字符串部分上,然后采取另一步骤提取每个单词的第一个字母(chr)。这就是为什么我认为正则表达式在这种情况下更好。如果字符串中包含-或其他特殊字符,则该节点也将起作用。然后,您当然可以在末尾添加.upcase方法以获得适当的缩写。

string = 'something - something and something else'

string.scan(/\b\w/).join

#=> ssase