Raf*_*res 1 java string equals string-comparison
我正在尝试从.csv文件中读取一个字符串(由 分隔;),然后将第一列与该login字符串进行比较。这是我的代码:
FileReader file = new FileReader("MyCSV.csv");
BufferedReader entry = new BufferedReader(file);
String row;
row = entry.readLine();
do {
String[] value = row.split(";");
if (login.equals(value[0])) { // login is passed as an argument to his function
// do something
}
row = entry.readLine();
} while (row != null);
Run Code Online (Sandbox Code Playgroud)
我可以阅读整个文件,但我无法搜索第一个用户注册。在login比较总是返回false到第一个。我试过:
if (value[0].equals(login))
if (value[0] == login)
Run Code Online (Sandbox Code Playgroud)
控制台中的一个例子:
// I've put this inside `do while`
System.out.println(value[0] + " and " + login + " = " + login.equals(value[0]));
Run Code Online (Sandbox Code Playgroud)
结果是:
leonidas and leonidas = false
rafatcb and leonidas = false
davinci and leonidas = false
login and leonidas = false
Run Code Online (Sandbox Code Playgroud)
如果我比较"rafatcb":
leonidas and rafatcb = false
rafatcb and rafatcb = true // true, as expected
Run Code Online (Sandbox Code Playgroud)
我也尝试下面的代码,但它仍然回报false为"leonidas":
value[0].trim().equals(String.valueOf(login.trim()));
Run Code Online (Sandbox Code Playgroud)
正如评论中所建议的,我使用.toCharArray()以下方法打印:
System.out.println(Arrays.toString(value[0].toCharArray()));
System.out.println(Arrays.toString(login.toCharArray()));
Run Code Online (Sandbox Code Playgroud)
结果是:
[, l, e, o, n, i, d, a, s]
[l, e, o, n, i, d, a, s]
Run Code Online (Sandbox Code Playgroud)
小智 5
由于您正在从文件中读取数据,因此您的变量中可能存在不可打印的字符value[0]。您可以按如下方式替换它们
value[0].replaceAll("\0", "").equals(login)
Run Code Online (Sandbox Code Playgroud)
它应该可以正常工作。
| 归档时间: |
|
| 查看次数: |
1165 次 |
| 最近记录: |