Java 文件解析 - 逐字逐句

Java File Parsing - Go word by word

我有一个文件内容如下:

Sample.txt: 嗨,我叫约翰 我是一名工程师。你好吗

我想要的输出是一个字符串数组列表,例如 [Hi,my,name,is,john,and,I,am,an,engineer,.,How,are,you]

标准 java 函数将其解析为线,我会得到一个包含线的数组。我对应该使用哪种方法来获得以下输出感到困惑。

感谢任何帮助。

.nextLine() 将得到一整行,但 .next() 将逐字逐句

如果您将字符串作为整行获取,但只需要单词,您可以在单词上使用 .split(" "),因为这会 return 一个包含单个单词且没有空格的数组。如果你想在文件阅读中这样做,你可以使用类似下面的东西...

public ArrayList<String> readWords(File file) throws IOException {
  ArrayList<String> words = new ArrayList<String>();
  String cLine = "";
  BufferedReader reader = new BufferedReader(new FileReader(file));
  while ((cLine = reader.readLine()) != null) {
    for (String word : cLine.split(" ")) {words.add(word);}
  }
  reader.close();
  return words;
}

这将 return 一个 ArrayList<String> 包含文件中的所有单个单词。

希望对您有所帮助。

您可以使用 Scanner class 和 .next() 方法结帐。

这将读取文件并将所有单词收集到字符串列表中。

编辑:更新以将标点符号等作为不同的词处理:

    try {
        List<String> words = Files.lines(Paths.get("/path/to/sample.txt"))
            .map(line -> line.split("\b"))
            .flatMap(Arrays::stream)
            .filter(w -> !w.trim().isEmpty())
            .collect(Collectors.toList());

        return words;
    } catch (IOException e) {
        // handle error 
    }