比较两个字符串时出现问题

uqdfh47h  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(398)

我正在用java读取一个csv文件。在文件中,每行的格式如下:

operation, start, end.

我需要为不同的输入做不同的操作。但是当我试着比较两条弦的时候发生了一些奇怪的事情。
我用equals来比较两个字符串。其中一个操作是“add”,但是我从文档中获取的第一个元素总是给我错误的答案。我知道这是一个“添加”,我把它打印出来,它看起来像一个“添加”,但当我使用 operation.equals("add") ,这是 false . 除了第一个字符串外,其他所有字符串都是正确的。csv文件的第一行有什么特别的地方吗?
这是我的密码:

while ((line = br.readLine()) != null) {
    String[] data = line.split(",");
    String operation = data[0];
    int start = Integer.parseInt(data[1]);
    int end = Integer.parseInt(data[2]);
    System.out.println(operation + " " + start + " " + end);
    System.out.println(operation.equals("add"));

例如,它打印出add1 3 false add4 6 true,我真的不知道为什么。这两个加法看起来完全一样。
我的csv文件是这样的:在这里输入图像描述

zujrkrfu

zujrkrfu1#

应该从第一个元素中删除双引号,然后使用equals方法进行检查。
试试这个:

String operation = operation.substring(1, to.length() - 1);
operation.equals("add")

希望对你有用。

7fhtutme

7fhtutme2#

看起来你在图像中的线条看起来不错。我想在这种情况下,您可能会设置错误的文档编码。e、 当utf,你不把它,那么是有特殊的头开始。这可能是你读错第一个单词的原因。

xxslljrj

xxslljrj3#

显示/打印两个“看起来”相同的字符串时,可能会出现不相等的情况,原因(至少)有4个:
如果你用 == 而不是 equals(Object) ,那么你经常会得到错误的答案(这不是问题所在。。。既然你用的是 equals 方法。但是,这是一个常见的问题。)
一个字符串上出现意外的前导或尾随空格字符。这些可以使用 trim() .
其他前导、尾随或嵌入的控制字符或unicode“时髦”字符。例如,unicode bom(字节顺序标记)字符。
同形文字。有许多示例,其中两个或多个不同的unicode代码点在屏幕上使用相同或几乎相同的glyph呈现。
只有使用traceprints或调试器来检查长度和长度,才能可靠地检测到情况3和4 char 两个字符串中的值。
(csv文件的屏幕截图不能帮助我们诊断这个问题!剪切并粘贴csv文件可能会有所帮助。)

相关问题