我正在尝试将字符串放入一个以空格作为分隔符的数组中,除了第一个字符串前面有空格外,它的效果很好,因此数组中的第一个元素是“”而不是第一个字符串。
public static String[] loadMessage(String fileName)
throws FileNotFoundException {
String[] s = null;
File f = new File(fileName + ".txt");
Scanner inFile = new Scanner(f);
while (inFile.hasNext()) {
s = inFile.nextLine().split(" ");
}
inFile.close();
return s;
}
是否有任何简单的解决方案,或者我必须编写另一个扫描仪和分隔符,什么不是。
答案 0 :(得分:3)
在每条读取行上调用String.trim()
,删除前导和尾随空格:
s = inFile.nextLine().trim().split(" ");
您还可以使用Files.readAllLines()
将所有行读入List
:
for (String line : Files.readAllLines(Paths.get(fileName + ".txt",
StandardCharsets.UTF_8))) {
String[] words = line.trim().split(" ");
// do something with words
}
答案 1 :(得分:2)
使用file
方法删除前导和尾随空格:
trim()
但是,正如@tnw指出的那样,在你的代码中只考虑最后一行...
答案 2 :(得分:2)
您可以在拆分前使用trim()
方法。
答案 3 :(得分:0)
您也可以使用正则表达式。如果你想保存第一个空格,你需要这样的东西:
s = inFile.nextLine().split("[^s]\\s+");
如果您有兴趣,可以了解有关正则表达式here
的更多信息