gpt4 book ai didi

java - (java) - 将输入文件中的每个单词存储在字符串数组中

转载 作者:行者123 更新时间:2023-12-01 16:59:43 26 4
gpt4 key购买 nike

在编写方法来完成此任务时遇到困难,有该方法的基本轮廓,但只需要一些指示/帮助来完成此任务。

  public static String [] readFileAndReturnWords(String filename){
//create array
//read one word at a time from file and store in array
//return the array
}

这是我到目前为止所拥有的:

public static String readFileAndReturnWords(String filename){   
String[] temp = new String[];

//connects file
File file = new File(filename);
Scanner inputFile = null;

try{

inputFile = new Scanner(file);

}
//When arg is mistyped
catch(FileNotFoundException Exception1) {
System.out.println("File not found!");
System.exit(0);
}


//Loops through a file
if (inputFile != null) {

try { //I draw a blank here

我知道一些 .next 和 .hasNext 调用是有序的,我只是不确定如何在问题的上下文中使用这些特定方法。

最佳答案

拆分成单个单词实际上比乍看起来要棘手一些 - 您拆分什么?

如果您以空格分隔,则句号、逗号和其他标点符号最终将附加到单词上,因此

quick, the lazy dog.

将分为:

  1. 快点,
  2. 这个
  3. 懒惰
  4. 狗。

这可能是你想要的,也可能不是。如果您按非单词字符进行拆分,那么您最终会按撇号、连字符等进行拆分,因此:

  • 不能,不会 ->
    1. 可以
    2. t
    3. 赢了
    4. t
  • 没有人怀疑超空间
    1. 没有
    2. 一个
    3. 嫌疑人
    4. super
    5. 空间

所以,这些解决方案都有各自的问题。我建议使用word boundary正则表达式匹配器。它有点复杂,但仍然存在问题 - 尝试不同的方法,看看什么会产生您需要的输出。

我建议的解决方案使用 Java 8:

public static String[] readFileAndReturnWords(String filename) throws IOException {
final Path path = Paths.get(filename);
final Pattern pattern = Pattern.compile("\\b");

try (final Stream<String> lines = Files.lines(path)) {
return lines.flatMap(pattern::splitAsStream).toArray(String[]::new);
}
}

所以首先你转换你的 StringPath ,文件位置的 Java NIO 表示。然后您创建您的 Pattern ,这决定如何分解单词。

如何简单地使用Files.lines流式传输文件中的所有行,然后 Pattern.splitAsStream将每一行变成单词。我们使用flatMap因为我们需要“展平”流,即每一行都是 Stream<String>我们已经有了 Stream<String>所以我们最终得到 Stream<Stream<String>>flatMap旨在采取 Stream<Stream<T>>并返回 Stream<T> .

关于java - (java) - 将输入文件中的每个单词存储在字符串数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28643680/

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