我们如何在JavaScript文件中找到不同的单词?

时间:2018-10-05 22:04:18

标签: javascript

在我的项目中,我需要整理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 

那么您能帮助我正确理解我的错误吗?

2 个答案:

答案 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');
      }
});