【问题标题】:Converting a string that contains multiple words to a vector of words将包含多个单词的字符串转换为单词向量
【发布时间】:2021-02-23 12:10:34
【问题描述】:

我有一个 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]

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

【问题讨论】:

    标签: java string vector io


    【解决方案1】:

    对于预期的输出,只需不使用任何显式分隔符即可。使用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]
    

    【讨论】:

    • 这给了我一个错误,因为 File(InputStream) 不起作用。我需要使用 InputStream 来获取外部文件,我不能只写进去。
    • @Student - vocabDoc 的类型是什么?我建议您编辑您的问题以添加更多代码,使其变得清晰。
    • 好的,我添加了文件描述。
    • @Student - 我已经相应地更新了答案。如有任何疑问/问题,请随时发表评论。
    • 似乎工作得很好。十分感谢你的帮助!!! :)
    猜你喜欢
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    相关资源
    最近更新 更多