查找用户是否在推文中被“提及”

时间:2015-11-22 19:06:18

标签: java jsp servlets

我需要一些有关此应用程序当前障碍的指导。如果你能指出我正确的方向将有所帮助。基本上我有一个类似于应用程序的twitter,存储“推文”和用户数据的sql数据库。用户的昵称总是以“@”开头。现在一切正常,但我需要添加功能,如果我发送一个twit并“提到”一个用户,这意味着我添加@nickname,那么我提到的那个人应该在他的消息上看到它。我想我可以搞清楚,但我只是对如何开始感到困惑,特别是当我收到“推文”时如何找到“@”并返回包含“@”的单词?下一步应该是查看该昵称是否存在并通过昵称找到userID并更新其消息?请帮帮我。

这就是我正在努力的......不工作..

   HttpSession session = request.getSession();

    String tweet = request.getParameter("tweet");

     ArrayList<User> x= new ArrayList<User>();
     for(int i = 0; i < x.size(); i++){
        String alias = x.get(i).getAlias();
         if(tweet.contains(alias)){
            try {
               int uid= getUseridByNickName(alias);

                Twit t = new Twit();
                t.setMentionedUserID(uid);

            } catch (SQLException ex) {
                Logger.getLogger(TwitServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
         }
     }

1 个答案:

答案 0 :(得分:0)

要获取上述用户的用户名,您只需使用 indexOf 方法:

String s = "@user1 @user2 some text";
ArrayList<String> users = new ArrayList<>();
int index = s.indexOf("@");
while(index != -1) {
    users.add(s.substring(index + 1, s.indexOf(" ", index)));
    index = s.indexOf("@", index + 1);
}

users.stream().forEach(System.out::println);

请注意,此方法仅在用户名后跟空格时才有效,否则用户名还将包含“@”与其创建的第一个空格之间的文本(例如,推文“@ user1,some text”将返回“user1,”)