gpt4 book ai didi

java - 与从文件中读取的字符串进行比较会返回 false,即使它们看起来相同

转载 作者:行者123 更新时间:2023-12-02 02:31:53 26 4
gpt4 key购买 nike

我正在尝试从 .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);

我可以读取整个文件,但无法搜索第一个用户寄存器。 login比较总是返回 false到第一个。我尝试过:

if (value[0].equals(login)) 
if (value[0] == login)

控制台中的示例:

// I've put this inside `do while`
System.out.println(value[0] + " and " + login + " = " + login.equals(value[0]));

结果是:

leonidas and leonidas = false
rafatcb and leonidas = false
davinci and leonidas = false
login and leonidas = false

如果我与 "rafatcb" 进行比较:

leonidas and rafatcb = false
rafatcb and rafatcb = true // true, as expected

我也尝试了以下代码,但它仍然返回 false对于 "leonidas" :

value[0].trim().equals(String.valueOf(login.trim()));
<小时/>

根据评论中的建议,我使用 .toCharArray() 进行打印:

System.out.println(Arrays.toString(value[0].toCharArray()));
System.out.println(Arrays.toString(login.toCharArray()));

结果是:

[, l, e, o, n, i, d, a, s]
[l, e, o, n, i, d, a, s]

最佳答案

由于您正在从文件中读取内容,因此变量 value[0] 中可能存在不可打印的字符。您可以按如下方式替换它们

value[0].replaceAll("\0", "").equals(login)

它应该可以正常工作。

关于java - 与从文件中读取的字符串进行比较会返回 false,即使它们看起来相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46960291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com