在我的项目中,我需要整理file.txt文件中包含不同单词的列表。我需要我的程序来识别这3个名称:bob,alicia和cookie。而且,每当他发现以“ cookie”为例时,我都希望显示“ dog”,“ alicia”,“ girl”,“ bob”,“ boy”以及其他单词“ unknown”。并且当有空格时,代码不应将其考虑在内。
所以输入文件是:
hello
shirley
cookie
bob
alicia
cook
road
alicia
stole
bob
我的代码:
//code in JavaScript
var texFile = "file.txt";
var file = new File (textFile);
file.open("r");
var str="";
while (!file.epf){
//read each line of text
str += file.readln()
file.close();
alert(str);
switch (names){
case "bob":
console.log('boy');
case "alicia":
console.log('girl');
case "cookie":
console.log('dog');
default:
console.log('unknown');
}
}
我对这段代码有很多问题,首先,我不知道如何正确地在“ switch”和文件之间建立链接,以便正确地研究文件中是否存在该单词。在第二个问题是关于输入文件中的空间之后,我的代码如何忽略它?
我需要的结果是:
unknown
unknown
dog
boy
girl
unknown
unknown
girl
unknown
boy
那么您能帮助我正确理解我的错误吗?
答案 0 :(得分:2)
fs是一个核心的nodejs模块。
您可以使用任何其他方式读取文件。
主要是str
应该包含文件内容。
我将内容按空格字符分组,包括换行符。
对于每个拆分元素,我调用一个函数登录到控制台并使用conditional ternary operator进行多次if-else-if检查。您可以在此处使用开关盒,但我更喜欢这种开关盒,因为它更紧凑,更易读。
var fs = require('fs');
var str = fs.readFileSync('file.txt', 'utf8');
str.split(/\s+/).forEach(function (s) {
console.log(
s === 'bob'
? 'boy'
: s === 'alicia'
? 'girl'
: s === 'cookie'
? 'dog'
: 'unknown'
);
});
答案 1 :(得分:1)
首先在文件行之间添加分隔符,并使用if语句检查该行是否包含单词
//read each line of text
if(file.readln().trim()!='')
{
str += ','+file.readln();
}
从您的str创建数组
var words=str.split(',');
使用foreach循环从单词数组中获取每个单词
words.forEach(function(word){
switch (word){
case "bob":
console.log('boy');
case "alicia":
console.log('girl');
case "cookie":
console.log('dog');
default:
console.log('unknown');
}
});