簡體   English   中英

隨機讀取一行 com 一個文件

[英]Read a random line com a file

我想從文件中獲取隨機行到我的 discord 機器人,但我不知道如何。

aleadry 從網站上嘗試了一些東西,但根本沒有幫助,它們都不起作用。

有什么幫助嗎?

[js]

您可以使用此方法:

function getRandomLine(filename){
  fs.readFile(filename, function(err, data){
    if(err) throw err;
    var lines = data.split('\n');
    // this is random line
    const readedLine = lines[Math.floor(Math.random()*lines.length)];
    console.log(readedLine);
 })
}

有關更多信息,您可以閱讀以下內容: Grabing a random line from file

雖然其他解決方案有效,但您可以使用此代碼同步執行此操作,使其更易於使用:

function getRandomLine(filename){
   var data = fs.readFileSync(filename, "utf8");
   var lines = data.split('\n');
   return lines[Math.floor(Math.random()*lines.length)];
}
var the_random_line_text = getRandomLine('file.txt');
console.log(the_random_line_text);

注意:因為這會阻塞主線程,如果您正在讀取非常大的文件,請小心,這可能會導致問題。 如果您確實使用了一個非常大的文件,我建議在程序啟動時將其作為數組加載,並且只是引用該數組,而不是每次需要時都讀取文件。

我找到了一個更簡單的方法。

fs = require('fs')
var data;
fs.readFile('filename.txt', 'utf8', function (err,rawData) {
  if (err) {
    return console.log(err);
  }
  data = rawData.split('\n');
});

function randomInt (low, high) {
    return Math.floor(Math.random() * (high - low) + low);
}

function getRandomLine(){
  return data[randomInt(0,data.length)];
}

如果您嘗試在命令中發送消息。

message.channel.send(getRandomLine())

把它放在你的命令中。

將“filename.txt”更改為您的名稱,保持“utf8”不變。

注意:適用於大文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM