Есть ли строковый метод, который проверяет точную строку символов, а не только строку, содержащую набор символов? - PullRequest
1 голос
/ 04 апреля 2020

Итак, у меня есть .CSV, который я пытаюсь разобрать. Мне удалось сделать то, что я хотел: найти указанное значение c в одном столбце, а затем распечатать всю строку, в которой находится это значение. Однако я столкнулся с проблемой, так как не могу найти строковый метод это проверит точную строку символов, и у моего CSV есть значения, которые частично повторяются (список не имеет большого смысла, это просто для упрощения):

Name, Age
Michael Smith, 40
John Smith, 22
Smith, 33

Мой код выглядит следующим образом:

  def find_row_in_csv(file_path, column_name, search_value)
    CSV.foreach(file_path, headers: true, col_sep: ';').find do |row|
      row[column_name].include?(search_value)
    end
  end

Если в качестве значения моего поиска выбрано «Смит», напечатанная строка будет

Michael Smith, 40

Я предполагаю, потому что это первый файл, в который включен Смит. Дело в том, что я на самом деле пытаюсь напечатать строку «Смит, 33».

TL; DR: есть ли строковые методы, которые будут проверять точную строку символов?

1 Ответ

1 голос
/ 04 апреля 2020

В ruby вы сравниваете равенство с == см. https://ruby-doc.org/core-2.7.1/String.html#method -i-3D-3D , так что вы, вероятно, хотите:

  def find_row_in_csv(file_path, column_name, search_value)
    CSV.foreach(file_path, headers: true, col_sep: ';').find do |row|
      row[column_name] == search_value
    end
  end
...