Использование регулярных выражений для анализа цикла для отображения только совпадающих результатов? - PullRequest
0 голосов
/ 19 января 2019

Проблема: У меня возникли проблемы, возникающие в результате выполнения цикла, соответствующего определенному регулярному выражению.

Я работаю с API-интерфейсом Twitter для получения имен пользователей (username2), которые твитнули сообщения другому пользователю(имя пользователя) и я создал это в моем контроллере:

@user_results = TwitterApi.client.search("to:username1", result_type: "recent").take(10).collect do |tweet|
     puts "#{tweet.user.screen_name}" if tweet.user.screen_name.gsub(/\A^username2\z.*/)

Затем зациклите, как это в моем представлении:

<% @user_results.each do |user| %>
  <%= user %>
  <% end %>

Этоничего не дает, даже когда должно быть результатом.

Если я использую "#{tweet.user.screen_name}".gsub(/\A^username2\z.*/)

Это приводит к:

<Enumerator:0x00007fb3a4b2f2a0>

Я также пытался:

tweet.user.screen_name.gsub(/\A^username2\z.*/) { |match| "#{tweet.user.screen_name}"}

Но в результате все результаты вместо того, чтобы соответствовать

Это прекрасно работает, если я потеряю puts "#{tweet.user.screen_name}" if tweet.user.screen_name.gsub(/\A^username2\z.*/) и просто использую "#{tweet.user.screen_name}".При этом отображаются все имена пользователей.

Регулярное выражение, которое я использую, если оно правильно, и работает со всеми вариациями на веб-сайте Regx101.

Я хочу, чтобы приносил только результаты или былtrue, если появляется конкретное имя пользователя.

Что я делаю не так?Это фрагмент контроллера или сторона просмотра?

В целом, я хочу иметь возможность привести имя пользователя и дать истинное значение ||ложь.

1 Ответ

0 голосов
/ 20 января 2019
   tweet.user.screen_name if tweet.user.screen_name.match('username2')

соответствует любому регулярному выражению или строке в ()

Мой финал таков:

TwitterApi.client.search("to:username", result_type: "recent").take(10).collect do |tweet|
       tweet.user.screen_name if tweet.user.screen_name.match(/#{@record.username}/i)
end

Таким образом, результаты верны вне зависимости от регистра

...