如何在不同的字符串之间抓取多个字符串?

时间:2013-11-19 11:17:06

标签: java

所以基本上我正在尝试构建一个简单的客户端 - 服务器程序,允许用户登录并相互通信。

我编写的代码允许一位用户在没有登录其他用户的情况下向另一位用户“窃窃私语”,以便能够看到私信。

我只能让“一个”用户看到该消息,但是在让更多用户看到私信时遇到了麻烦。

例如,这是允许用户向他查看私人消息的代码:

string restOfMessage = "/w bob hi bob";
/w bob hi bob
/ w 是低语的命令, bob 是用户窃窃私语, hi bob 是消息

为了提取鲍勃,我这样做了:

StringBuffer userMessage = new StringBuffer();
buffer.append(restOfMessage.substring(restOfMessage.indexOf(' ') + 1,
restOfMessage.length()));
String whisperUser = buffer.substring(0, buffer.indexOf(" "));

然后我按照相同的方法提取 hi bob

我有一个迭代器,它遍历在线用户的HashMap,如果该在线用户匹配 bob ,我会给他发一条消息。

第一个问题是,如何提取多个用​​户发送消息?即如果代码是:

/w bob mike john hi guys

第二个问题是,我如何以这样的方式存储3个用户,允许我遍历HashMap并将其发送给仅有3个用户而不是其余用户?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以将字符串拆分为空格字符(),迭代结果,并将该消息视为从包含与有效用户名不匹配的第一个单词开始并包含的所有内容。在此之前的一切,是应该得到消息的用户。

或者,您可以使用不同的语法,例如

/w bob,mike,john hi bob

,之后你知道你希望有另一个用户名。

答案 1 :(得分:0)

可能会定义一些分隔符。

"/w bob mike john: hi bob"

冒号可以作为信息的开头。

或者以不同的方式定义用户:

"/w @bob @mike @john hi bob"

有很多方法可以解决这个问题,你需要定义一个好的布局并坚持下去。如果这只是一个临时应用程序,您可以定义自己的随机应用程序。但是看看IRC已经存在多年了。一个好看的地方是RFC文档。最相关的是