java

时间:2015-05-29 17:49:16

标签: java regex string special-characters

我想解释一下我从客户端提交给服务器的命令字符串的问题。通过这个特定的命令,我必须登录到服务器管理的数据库。根据项目的指南,命令的格式是:login @ username; password。该字符串通过套接字发送到服务器。用户插入他的凭据,然后将这些凭据发送到服务器,将它们放入命令中。服务器必须从命令中拆分用户和密码,并且必须在数据库中检查用户是否已存在。这是我的问题,因为在用户和密码中可以存在; (分隔符的相同字符),我不明白(服务器端)如何将用户和psw与命令分开,以便用户和psw与客户端中插入的用户和psw相同。

你有什么想法吗?我正在考虑使用正则表达式,这是正确的方法吗?

3 个答案:

答案 0 :(得分:1)

我只是将字符串拆分为用户/传递字符串,如下所示:

String userPass = "User;Pass";
String[] parts = userPass.split(";");
String user = parts[0];
String pass = parts[1];

答案 1 :(得分:1)

如果您真的必须通过两个子字符串中包含的分隔符拆分字符串,则无法确保字符串始终正确分割!

我认为您可以使用unicode unit separator character 0x001F安全地分隔字符串,因为用户在输入此类字符时会遇到一些困难! 但是,根据您的应用程序和字符串处理,这也可能会造成损害,因为存在一些与不兼容性有关的问题(例如xml 1.0 doesn't support it at all)。

否则,如果只有一个或没有子字符串可能包含这样的字符,您可以轻松地使用已经提供的方法之一来拆分字符串并安全地提取数据。

答案 2 :(得分:0)

仅当用户/密码不包含@;

时,此功能才有效
    String loginStr = "login@User;Password";

    String []splittedLogin = loginStr.split("@");

    String []loginCredentials = splittedLogin[1].split(";");

    String user = loginCredentials[0];
    String password = loginCredentials[1];

    System.out.println(user);