3

たとえば、ユーザーが@John_Smith hi, what's up!? I'd like to call John_Smith's object と入力し、通知を彼に配信して彼に気づかせます。
どうすればそれをアーカイブできますか?

username = @comment ??????(I have no idea how to code it here)
@user = User.find_by_username(username)
current_user.send_message(@user, body, subject)

判断の仕方は@username(one space)

4

2 に答える 2

1

文字列内の任意の場所に一致するには:

s.scan(/\@(\w+)/).flatten.first

サンプル:

>> s
"Hello @Jhon!"

>> s.scan(/\@(\w+)/).flatten.first
"Jhon"

>> s = "@John_Smith hi, what's up!?"
"@John_Smith hi, what's up!?"

>> s.scan(/\@(\w+)/).flatten.first
"John_Smith"

ルビーの正規表現についてより多くの知識を得るために、このhttp://www.rubular.comが好きかもしれません

于 2013-06-16T03:02:22.800 に答える
1
username = @comment.scan(/(?<=^@)\w+(?=[\s|~])/).first

コンソール テスト:

2.0.0-p195 :001 > s = "@John_Smith~hi"
 => "@John_Smith~hi"
2.0.0-p195 :002 > s.scan(/(?<=^@)\w+(?=[\s|_])/).first
 => "John_Smith"

~編集:区切り文字としてまたは空白を受け入れるようになりました。

于 2013-06-16T02:28:32.140 に答える