在Buffer中正确分隔字符串

时间:2012-08-27 07:04:16

标签: java string apache

我想知道如何在Java中的缓冲区中正确分隔字符串(使用Apache MINA中的IoBuffers)。这是一些示例代码:

客户端

IoBuffer buffer = IoBuffer.allocate(100);
buffer.putString("username");
buffer.putString("password");
buffer.flip();
session.write(buffer);

因为我在字符串中放入一个接一个的字符串,所以当服务器收到缓冲区时,它将被视为一个字符串。

服务器端

IoBuffer buffer = (IoBuffer) message;
String username = buffer.getString(Charset.forName("UTF-8").newDecoder());
String password = buffer.getString(Charset.forName("UTF-8").newDecoder());

这将在第二个getString()上抛出某种异常,因为程序认为它得到了整个String(因为这两个字符串放在一起算作一个字符串)。

我应该如何正确划分这两个字符串?显而易见的方法是做类似的事情:

“用户名:密码”

并在服务器端:

String[] args = buffer.getString(Charset.forName("UTF-8").newDecoder()).split(":", 2);
String username = args[0];
String password = args[1];

这是最好的方法吗?或者是否有更合适的方法来划分这两个字符串?

非常感谢!

2 个答案:

答案 0 :(得分:1)

你有很多方法:通常使用'\n'是最好的[使用readLine()或nextLine()],'\t'有时像CSV一样

你也可以使用不在LANG中的特定字符,例如不是ASCII'¨'中的重音符号,或者像'§''µ'这样的符号

你也可以,不可打印的BELL char delim = '7';

答案 1 :(得分:0)

我认为最好的方法是使用分隔符,但可能不是:,因为它用于搜索路径等。分号;可能是更好的分隔符,即使它看起来不太好。

这就是我至少在我的应用程序中使用的方法。