Проверьте первый символ всех слов в массиве и верните тот, который начинается, например, с «a или т. Д.» В массиве - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь найти первый символ в массиве, который состоит из нескольких слов.

Я получил все слова, но я не знаю, как проверить первый символ из всех ???? !!!!!

def strange_words(words)
  newarray = []
  i = 0
  while i < words.length
    letters = words[i]
    if ???? #problem is here

    end 
    i += 1
  end
  return newarray   
end

puts strange_words(["eating", "period", "value", "earth"])

например, первый символ в значении - "v", и я хочу это.Спасибо

Ответы [ 3 ]

0 голосов
/ 02 февраля 2019

Array # select Возвращает новый массив, содержащий все элементы ary, для которых данный блок возвращает истинное значение.

def strange_words(array, started_character)
  array.select{|m| m.start_with?(started_character)}
end

Вывод:

strange_words(["eating", "period", "value", "earth"], 'ea') 
#=> ["eating", "earth"]

Приветствия

0 голосов
/ 02 февраля 2019

Я предположил, что все слова, имеющие желаемое свойство, должны возвращаться в массиве, а не только в первом таком слове.Вопрос не ясен по этому поводу, что отражено в разных ответах.

def strange_words(words, begins_with)
  words.grep /\A#{begins_with}/
end

words = ["eating", "period", "value", "earth", "vortex", "evenly"]

strange_words(words, "v")
  #=> ["value", "vortex"]
strange_words(words, "ea")
  #=> ["eating", "earth"]
strange_words(words, "z")
  #=> []

См. Enumerable # grep .Регулярные выражения гласят: «соответствует началу строки (\A), за которым следует строка, которая является значением begins_with».

Если будет возвращено только первое совпадение, один из вариантов будетсделать grep ленивым перечислителем, чтобы остановить поиск после того, как найдено первое совпадение:

def strange_words(words, begins_with)
  words.lazy.grep(/\A#{begins_with}/).first
end
strange_words(words, "v")
  #=> "value"
0 голосов
/ 02 февраля 2019

Array # find делает именно это.Возвращает первый элемент, который соответствует условию в блоке:

. Вы можете создать метод, подобный этому:

def first_word_starting_with(array, characters)
  array.find { |el| el.start_with? characters }
end

arr = ["eating", "period", "value", "earth"]
first_word_starting_with(arr, "v")
# => "value"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...