Java split方法忽略空格、分割符问题及登录代码咨询
解决Java split方法分割
|的问题 嘿,我来帮你搞定这个split的坑!你遇到的问题核心在于Java的String.split()方法参数是正则表达式,而|在正则里是特殊的“或”元字符,直接用它分割的话,会把字符串的每一个字符都拆分开,这显然不是你想要的结果。
正确的分割方式
要正确按|分割字符串,你需要把这个特殊字符转义成普通字符,有两种靠谱的方式:
- 手动转义:用双反斜杠
\\|,因为Java字符串里单个反斜杠需要转义,所以两个反斜杠最终会被正则引擎识别为一个普通的反斜杠,用来转义|:
String some = "my name|username|password"; String[] split = some.split("\\|");
- 使用Pattern.quote()自动转义:如果怕记混正则转义规则,用
Pattern.quote()可以把任意字符串转成正则里的普通字面量,更安全:
import java.util.regex.Pattern; // ... String some = "my name|username|password"; String[] split = some.split(Pattern.quote("|"));
验证结果
用上面两种方式处理后,split数组的结果完全符合你的需求:
split[0] = "my name"(空格会被完整保留,因为我们只按|分割,不会处理空格)split[1] = "username"split[2] = "password"
关于你的登录验证代码
从你给出的片段来看,你应该是从Login.txt里读取每行的用户记录,只要把读取到的每行字符串用上面的split方法处理,就能正确拆分出用户名、密码等字段啦。比如读取一行后:
String line = br.readLine(); if (line != null) { String[] userInfo = line.split("\\|"); String username = userInfo[0]; String password = userInfo[1]; // 后续验证逻辑... }
内容的提问来源于stack exchange,提问作者Panji Wiramanik
相关产品推荐
相关产品推荐

