[英]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.