2016-05-28 5 views
0

私は出力を得ている理由を私は理解していない:コードがconsole.log()を壊します!

var frenchWords; 
fs = require('fs') 

var data = fs.readFileSync('frenchVerbsList.txt', 'utf8'); 
frenchWords = data.split('\n'); 
console.log(Array.isArray(frenchWords)); //true 

var x = frenchWords[0]; 
console.log("a: " + "look: " + x + typeof(x)); 
//outputs "stringk: abaisser" 

を出力しない理由を私は理解していない「:見て:abaisserstring」何が起こっているの

を任意の説明感謝:-)

ジェラルド

を受信されるテキストファイルの行がで終了しているので、それはおそらく起こって
+1

まあ、私はあなたのプログラムを使用して、出力は期待どおりです。 'a:look:abaisserstring'です。あなたのファイル 'frenchVerbsList.txt'はどうなっていますか?私のために、その新しい行は単語を区切った。 –

+0

異なる環境で\ rと\ nについて不思議に思う場合:http://stackoverflow.com/questions/1761051/difference-between-n-and-rまたはノードの代わりにブラウザのソリューションについて:http:// stackoverflow .com/a/1156388/146513 –

+0

不可能!これが実行しているコードとまったく同じですか? –

答えて

4

\ rを\ nは、だけではなく、\ nは私がこれを再現することができますよう:

var x = 'abaisser\r'; 
console.log("a: " + "look: " + x + typeof (x)); 

stringが以前に出力a: loo文字をoverrwritesようCR(\ r)はcharはバックラインの先頭に出力カーソルを返すので、これは"stringk: abaisser"を出力します。使用してCR、LF、あるいはCRLFの共通ライン終端のいずれかに一致する正規表現を使用し、

frenchWords = data.split('\r\n'); 

それともイスマエルとして

はコメントで示唆:

そうにあなたのdata.splitの呼び出しを変更してみてください

frenchWords = data.split(/\r?\n|\r/g) 
+1

実際には、 'data.split(/ \ r?\ n | \ r/g)'を使用してください。改行の問題はなくなりました。これは '\ r'、' \ n'、 '\ r \ n'で動作します。 '' ab〜」、「test」、「〜」、「〜」、「〜」、「〜」、「〜」、「〜」、 、 "f"] ') –

+0

@IsmaelMiguel良いアイデア - 追加されました。ありがとう。 – JohnnyHK

関連する問題