Извлечь последнее слово в предложении/строке?
У меня есть массив строк различной длины и содержимого.
Теперь я ищу простой способ извлечь последнее слово из каждой строки, не зная, сколько времени это слово или как долго строка.
что-то вроде;
array.each{|string| puts string.fetch(" ", last)
Ответы
Ответ 1
Это должно работать просто отлично
"my random sentence".split.last # => "sentence"
чтобы исключить пунктуацию, delete
it
"my random sentence..,.!?".split.last.delete('.!?,') #=> "sentence"
Чтобы получить "последние слова" в виде массива из массива, вы collect
["random sentence...", "lorem ipsum!!!"].collect { |s| s.split.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", "three four five"].collect { |s| s.split.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>