Извлечь последнее слово в предложении/строке?

У меня есть массив строк различной длины и содержимого.

Теперь я ищу простой способ извлечь последнее слово из каждой строки, не зная, сколько времени это слово или как долго строка.

что-то вроде;

array.each{|string| puts string.fetch(" ", last)

Ответ 1

Это должно работать просто отлично

"my random sentence".split.last # => "sentence"

чтобы исключить пунктуацию, delete it

"my rando­m sente­nce..,.!?".­split.last­.delete('.­!?,') #=> "sentence"

Чтобы получить "последние слова" в виде массива из массива, вы collect

["random sentence...",­ "lorem ipsum!!!"­].collect { |s| s.spl­it.last.delete('.­!?,') } # => ["sentence", "ipsum"]

Ответ 2

array_of_strings = ["test 1", "test 2", "test 3"]
array_of_strings.map{|str| str.split.last} #=> ["1","2","3"]

Ответ 3

["one two",­ "thre­e four five"­].collect { |s| s.spl­it.last }
=> ["two", "five"]

Ответ 4

"a string of words!".match(/(.*\s)*(.+)\Z/)[2] #=> 'words!' улавливается из последнего пробела. Это будет включать пунктуацию.

Чтобы извлечь это из массива строк, используйте его с помощью collect:

["a string of words", "Something to say?", "Try me!"].collect {|s| s.match(/(.*\s)*(.+)\Z/)[2] } #=> ["words", "say?", "me!"]

Ответ 5

Это самый простой способ, о котором я могу думать.

hostname> irb
irb(main):001:0> str = 'This is a string.'
=> "This is a string."
irb(main):002:0> words = str.split(/\s+/).last
=> "string."
irb(main):003:0>