如何解决将文件按行然后按单词分割时,为什么会得到一个空向量?
我正在尝试使用Rust读取文本文件,其中每一行都有两个用空格隔开的单词。我必须得到第一个单词的长度:
use std::fs;
fn main() {
let contents = fs::read_to_string("src/input.txt").expect("Wrong file name!");
for line in contents.split("\n") {
let tokens: Vec<&str> = line.split_whitespace().collect();
println!("{}",tokens[0].len());
}
}
input.txt文件的内容为:
monk perl
我正在Windows上运行,并且正在使用货运运行。我收到以下错误(由于tokens[0].len()
):
4
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 0'
我不知道我的代码有什么问题。文件“ input.txt”不为空。
解决方法
通过使用SELECT CONVERT(datetime2(0),STUFF(STUFF(STUFF(STUFF(CONCAT(datekey,'T',RIGHT('000000' + timekey,6)),14,':'),12,7,'-'),5,126)
FROM (VALUES(20200430,103500))V(datekey,timekey);
,您将在迭代器中获得两项。一个是您期望的行,另一个是换行符之后的空字符串。空字符串拆分成单词时为空。这意味着向量将为空,并且索引0处没有任何项。
改为使用str::lines
:
.split("\n")
另请参阅:
,use std::fs;
fn main() {
let contents = fs::read_to_string("text.txt").expect("Wrong file name!");
for line in contents.split("\n") {
let tokens: Vec<&str> = line.split_whitespace().collect();
if !tokens.is_empty() { // necessary because of contents.split("\n")
let word_list = read_dictionary(tokens[0].len());
println!("{}",tokens[0].len());
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。