2016-08-02 3 views
1

私の問題に関連してここで他の質問を閲覧しましたが、私の状況で動作していないか、間違って使用しています。キーワードのファイルを検索し、残りの行をログに記録します

大きなファイルを読むには、最初の単語を見て、それがユーザーからの入力と一致するかどうかを確認してください。それ以外の場合はconsole.logとします。

FILE.TXT

#one: This is the first line 
#two: This is the second line 
#three: This is the third line 
etc 

ノードのJs

// Take in user input 

var msgSplit = userInput.split(" "); 

if (msgSplit[0].startsWith("#") { 

    var lineReader = require('readline').createInterface({ 
     input: require('fs').createReadStream('Custom_Phrases') 
    }); 

    lineReader.on('line', function(line) { 
     if(line.indexOf(msgSplit[0]) < 0) { 
      console.log(line); 
     } 
    }); 
} 

これは一種の、動作しますが、それは私が欲しいものの後の行を返します。可能であれば、たとえば、ユーザーが#oneを入力するとします。これは、最初の行がコンソールに記録されます。

+2

'line.indexOf(msgSplit [0])は、<0 'あなたのユーザ入力が検出されないことを意味します。したがって、ユーザ入力と一致しない線のみが示される。 if文に対して 'line.indexOf(msgSplit [0])> = 0'を試してみます。 –

+0

少年私はそれの後にちょっとばかげていると感じます、それは動作していただきありがとうございます。私は、elseがエラーログであったため、最初のステートメントが行を印刷すると考えたので、私が従ったユーザーの例が混乱しました。 –

+1

あなたが自分でコードを書いていないと、そのようなエラーを簡単に見ることができます。私は昨年何百もの間違いを犯し、友人たちに "ねえ、私のコードに何が間違っているの?"と尋ねなければなりませんでした。そして、彼らは顔を笑わせているよりも、私は知っていた.... ;-) –

答えて

1

line.indexOf(msgSplit[0]) < 0は、ユーザー入力が見つからないことを示します。したがって、ユーザ入力と一致しない線のみが示される。

これを試してみてください:

// Take in user input 

var msgSplit = userInput.split(" "); 

if (msgSplit[0].startsWith("#") 
{ 
    var lineReader = require('readline').createInterface({ 
     input: require('fs').createReadStream('Custom_Phrases') 
    }); 

    lineReader.on('line', function(line) { 
    if(line.indexOf(msgSplit[0]) >= 0) 
    { 
     console.log(line); 
    } 
    }); 
} 
関連する問題