私は現在、メンション機能を作成しているので、ユーザーが @ を入力すると、次に入力するユーザー名の部分がスペースが表示されるまでクリック可能になります。これは、文字と数字のみを含むユーザー名を正しく入力したことを前提としています。私はそれが機能する必要があるので、彼らが「こんにちは@ジョン!」と入力した場合 感嘆符 (または文字や数字ではない任意の記号) がユーザー名の一部ではないことを検出し、次のスペースを探す代わりにそれを除外します。
これは私が持っているものです:
while @comment.content.include? "@" do
at = @comment.content.index('@')
space = @comment.content.index(' ', at)
length = space - at
usernotag = @comment.content[at + 1,length - 1]
userwtag = @comment.content[at,length]
@user = User.where(:username => usernotag.downcase).first
@mentioned_users.push(@user)
replacewith = "<a href='/" + usernotag + "'>*%^$&*)()_+!$" + usernotag + "</a>"
@comment.content = @comment.content.gsub(userwtag, replacewith)
end
@comment.content = @comment.content.gsub("*%^$&*)()_+!$", "@")
どうすればいいですか?