java中的正则表达式字符串
我想解释一下从客户端提交到服务器的命令字符串的问题。通过这个特定的命令,我必须登录到服务器管理的数据库。根据项目指南,命令的格式为:login@username;密码。字符串通过套接字发送到服务器。用户插入他的凭证,并将其发送到服务器,将其放入命令中。服务器必须从命令中分离用户和密码,并且必须在数据库中检查用户是否已经存在。这里是我的问题,因为在用户和密码中都可以出现;(分隔符的相同字符),我不明白(服务器端)如何从命令中划分用户和psw,以便用户和psw与插入到客户机中的相同java中的正则表达式字符串,java,regex,string,special-characters,Java,Regex,String,Special Characters,我想解释一下从客户端提交到服务器的命令字符串的问题。通过这个特定的命令,我必须登录到服务器管理的数据库。根据项目指南,命令的格式为:login@username;密码。字符串通过套接字发送到服务器。用户插入他的凭证,并将其发送到服务器,将其放入命令中。服务器必须从命令中分离用户和密码,并且必须在数据库中检查用户是否已经存在。这里是我的问题,因为在用户和密码中都可以出现;(分隔符的相同字符),我不明白(服务器端)如何从命令中划分用户和psw,以便用户和psw与插入到客户机中的相同 你对这件事有什么
你对这件事有什么想法吗?我在考虑使用正则表达式,这是正确的方法吗?我会将字符串拆分为一个user/pass字符串,如下所示:
String userPass = "User;Pass";
String[] parts = userPass.split(";");
String user = parts[0];
String pass = parts[1];
仅当用户/密码不包含
@
或时,此选项才有效代码>
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);
如果您确实必须使用包含在两个子字符串中的分隔符拆分字符串,则无法确保始终正确拆分该字符串
我认为您可以使用unicode安全地分隔字符串,因为用户在输入这样的字符时会遇到一些困难!
但是,根据应用程序和字符串处理的不同,这也可能造成损害,因为存在一些有关不兼容的问题(例如)
否则,如果只有一个或没有子字符串可能包含这样的字符,您可以轻松地使用已经提供的方法之一拆分字符串并安全地提取数据 如果用户名和密码还可以包含一个或多个分号,则这是不可能的。服务器如何知道哪个分号是分隔符,哪些是用户名和/或密码的一部分?正则表达式不能解决这个问题。如果用户名和/或密码包含一个或多个分号,如Antonio在问题中提到的,该怎么办?是的,我没看到他提到这一点。编辑:那么对于这样的事情,最好的做法是什么呢?将用户/通行证拆分为可笑的异常情况?(例如,“3~a45n”)