ありがとうございました! 私は自分のレールアプリにハッシュタグのようなツイッターを保存しようとしています。ユーザーは#hashtagシンボルの先頭にタグを入力します。ただし、空の文字列を保存し続けます。私はそれを戦うために追加の文を追加しましたが、今はタグを保存しません。 コード:ハッシュタグのようなTwitterをRegex Railsで保存
def tag_list=(names)
self.tags = names.split(/\B#\w+/).map do |n|
unless n.strip == "" || n.strip == nil
Tag.where(name: n.strip).first_or_create!
end
end
end
私もまた同じことを返し、次の正規表現しようとしました:あなたの最初の正規表現は完全に動作しますが、あなたはscan
代わりのsplit
、そうするようにコードを使用する必要があります
/\B#\w+/
/(?:^|\s)(?:(?:#\d+?)|(#\w+?))\s/i
/(?:\s|^)(?:#(?!\d+(?:\s|$)))(\w+)(?=\s|$)/i
でハッシュタグを保存したい場合は、
tag.remove('#')
を必要としないことがあり、一度scan
find_or_initialize_by
代わりのwhere
その後、first_or_create!
save!
['String#scan'](http://ruby-doc.org/core-2.3.0/String.html#method-i-scan)は[' String#split']よりもこれに適したツールかもしれません(http://ruby-doc.org/core-2.3.0/String.h tml#method-i-split)。文字列を分割して文字列に分割しようとしているわけではありません。文字列をスキャンして特定のパターンを見つけることを試みています。 –