Techioz Blog

Ruby: 文字列に部分文字列が含まれているかどうかを確認します。

概要

ユーザーは CSV ファイルをサービスにアップロードできます。 CSV には 2 つの列名が必要で、それ以外は何も必要ありません。 1 つの列は「電子メール」、もう 1 つの列は「クレジット」である必要があります。これらの列名には、スペース、文字、リターンなど、他のものを含めることはできません。

今、私はこれでヘッダーを取得しています:

first_row = File.open(csv_file.tempfile, &:readline)
first_row = first_row.downcase

したがって、最初の行が小文字になり、次のようにして「email」または「credit」の存在を確認します。

first_row.include?("email") && first_row.include?("credit")

ヘッダーに他の文字やスペースが含まれている場合でもテストに合格することに気づくまではうまく機能しました。このメールやその他ほとんどすべてのもののように

長さを数えたり、文字列を分割したりすることを考えていましたが、first_row に必要な単語のみが含まれているかどうかを一貫して判断できるものは何も思いつきませんでした。

皆さんはどう思いますか?

解決策

これはうまくいきます。

first_row = File.open(csv_file.tempfile, &:readline)
first_row = first_row.downcase.strip
header = first_row.split(',')

if header.sort == ["credit", "email"]
  # The header is valid
else
  # The header is invalid
end