首页 > 解决方案 > 将包含多个单词的字符串转换为单词向量

问题描述

我有一个 InputStream 文件,我必须将该文件中的所有单词放入字符串向量中。我尝试了多种方法将 InputStream 文件转换为可以读取其中所有单词的位置,但无论如何我总是以包含所有单词的长字符串结束。如何将文件中的所有单词分开,以便将它们放入字符串向量中?这是我从 InputStream 文件转换为字符串的代码:

public static InputStream vocabDoc = Librarian.class.getClassLoader().getResourceAsStream("Vocabulary.txt");

String str = new Scanner(vocabDoc,"UTF-8").useDelimiter("\\A").next();
System.out.println(str);

这就是文件“vocabDoc”包含的内容(确切地说):

file
vocabulary
test
is
one
this
for

如果我尝试将它放在一个向量中,它总是会返回为:

[file

vocabulary

test

is

one

this

for

]

如果我把"\n"它拿出来:[filevocabularytestisonethisfor],我的目标是有类似的东西:[file, vocabulary, test, is, one, this, for]代替。

我不确定从这里去哪里,非常感谢一些帮助。

标签: javastringvectorio

解决方案


对于预期的输出,只需不使用任何显式分隔符即可。使用Scanner#hasNext,您可以测试文件是否有更多要阅读的单词。

演示:

import java.io.InputStream;
import java.util.Scanner;
import java.util.Vector;

public class Main {
    public static void main(String[] args) {
        InputStream vocabDoc = Main.class.getClassLoader().getResourceAsStream("Vocabulary.txt");
        Scanner scanner = new Scanner(vocabDoc);
        Vector<String> vector = new Vector<>();
        while (scanner.hasNext()) {
            vector.add(scanner.next());
        }
        scanner.close();
        System.out.println(vector);
    }
}

输出:

[file, vocabulary, test, is, one, this, for]

推荐阅读