Java:BufferedReader 行与 String 问题相比
Java: BufferedReader lines compared to String issues
我有一个程序正在读取一个包含项目列表的文本文件,创建一个由它读取的项目组成的 ArrayList,然后将它与几个选定的词进行比较。例如,我的文本文件包含这个(没有编号):
- 本书
- 办公桌
- 食物
- phone
- 套装
它读取每一个并将其添加到 ArrayList。当我尝试将 String s = "book" 与 ArrayList 中的每个元素进行比较时,我发现 s 不等于任何东西。这是我在一个方法中所拥有的:
for (int i = 0; i < list.size(); i++)
{
if (s.equals(list.get(i))
return true;
}
s.contains() 也不起作用。当我打印 ArrayList 时,每个 String 元素的末尾都有一个额外的空格。当 s = "book" 时,如何进行比较?为什么会有额外的空格?
您可以使用字符串 class 的 trim()
方法来删除字符串开头和结尾的空格。
空格可能在文件中,但您没有注意到。向编辑器确认末尾没有空格。为了更加确定,请使用 unix 上的 hd
等十六进制编辑器进行检查。
另外,检查读取的字符串不包含换行符。
使用trim() 删除前导和尾随空格。
if (s.equals(list.get(i).trim())
return true;
}
而不是
if (s.equals(list.get(i))
return true;
}
我有一个程序正在读取一个包含项目列表的文本文件,创建一个由它读取的项目组成的 ArrayList,然后将它与几个选定的词进行比较。例如,我的文本文件包含这个(没有编号):
- 本书
- 办公桌
- 食物
- phone
- 套装
它读取每一个并将其添加到 ArrayList。当我尝试将 String s = "book" 与 ArrayList 中的每个元素进行比较时,我发现 s 不等于任何东西。这是我在一个方法中所拥有的:
for (int i = 0; i < list.size(); i++)
{
if (s.equals(list.get(i))
return true;
}
s.contains() 也不起作用。当我打印 ArrayList 时,每个 String 元素的末尾都有一个额外的空格。当 s = "book" 时,如何进行比较?为什么会有额外的空格?
您可以使用字符串 class 的 trim()
方法来删除字符串开头和结尾的空格。
空格可能在文件中,但您没有注意到。向编辑器确认末尾没有空格。为了更加确定,请使用 unix 上的 hd
等十六进制编辑器进行检查。
另外,检查读取的字符串不包含换行符。
使用trim() 删除前导和尾随空格。
if (s.equals(list.get(i).trim())
return true;
}
而不是
if (s.equals(list.get(i))
return true;
}