やりたいこと
JavaScriptで、main.txtを参照して指定した行(今回はテステス
が書いてある1行目
)のみを削除させたいです。
main.txtの中身は、
txt
1寿司食べたい 2テステス 3ワーワー 4おなかすいたー 5ヒューヒュー 6...
このように適当な日本語の羅列があるだけです。
###書いてみたコード
JavaScript
1 const fs = require("fs"); 2 fs.readFile("main.txt", "utf8", function(err, data) { 3 const ward = ("テステス");//指定するワード 4 const lines = data.split("\n");//行で分ける 5 6 const index = lines.findIndex(line => ~line.indexOf(ward)); //そのワードがある行(1) 7 console.log(index + "行目にある");//(1行目にある) 8 9 const linesderlete = data//以下、いろんなとこから漁ったものなので正直解りきってない 10 .split("\n") 11 .slice(index) 12 .join("\n"); 13 fs.writeFile("main.txt", linesExceptFirst, "utf8", function(err) { 14 if (err) return console.log(err); 15 }); 16 });
###起きている問題
-
最初はワードがある行を教えてくれるのだが、もう一度やると
0
と言われてしまいます。本当に行を削除したはずなら見つからずに-1
をいうはずです -
エラーメッセージは出ていません。
-
動作環境的に、txtへの編集がすぐに反映されないので、何がその時起こっているのかを目視する方法がありません。
###動作環境
glitchというサイトを使って動かしています。
そのため、上記に記した通りmain.txtに書き込んだ内容がすぐに反映されず難航しています。
###追記:解決方法
2KOHさん、AkitoshiManabeさん、そしてshinji709さん、ありがとうございました!
javascript
1fs.readFile("main.txt", "utf8", function(err, data) { 2 var ward = "テステス"; 3 const lines = data.split("\n"); 4 5 console.log(lines); //元の文章 6 7 function filterWards(arr, query) { 8 return arr.filter(function(el) { 9 return el.indexOf(query) == -1; 10 }); 11 } 12 13 const henkou = filterWards(lines, ward); //目指す文章 14 console.log(henkou);//"テステス"が消え、かつ改行されている 15 16 fs.writeFile("main.txt", henkou.join("\n"), function(err) {}); 17});
おそらくこれは最適解かと言われればそうではないと思いますが、手助けをしてもらい最終的に自分で書けたので個人的には満足です。重ね重ねありがとうございましたっ
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/04 09:27