我目前正在创建一个小应用程序,每天自动发布部分书籍。
我的书位于文本文件中,因此我希望将此文本文件的内容拆分为140个字符长的字符串数组。
我想使用像split()这样的函数,但是到目前为止我还没有得到好的结果。
顺便说一下,我想要创建的字符串之间没有特定的分隔符。
我想过计算文本文件中的字符数,然后定义 limit (即分割数),有140个字符串,但我想必须有更直观的功能
有什么想法吗?
这是我的实际代码,test.txt以文本格式链接到本书。
var fs = require('fs');
var array = fs.readFileSync('./test.txt').toString().match("{1,140}");
for(i in array) {
console.log(array[i]);
}

感谢您的回答,这是我的新代码。控制台正在给我发回奇怪的数字。
var fs = require('fs');
var book = fs.readFileSync('./test.txt');
var lastSplit; // position of the last split that you will cache
var limit = book.length > 140 ? 140 : book.length - lastSplit;
var urlsToAdd = book.slice(lastSplit, lastSplit + limit);
for(i in book) {
console.log(book[i]);
}

谢谢
答案 0 :(得分:0)
你可以做什么,而不是在n个分裂中一次分割整本书,每个分成140个字符,要记住最后一个分割的最后位置,也就是之前完成的分割总数。
var lastSplit; // position of the last split that you will cache
var limit = book.length - lastSplit > 140 ? 140 : book.length - lastSplit;
var urlsToAdd = book.slice(lastSplit, lastSplit + limit);
lastSplit
将保留最后一次拆分的位置,并且还会指示已拨打多少字符。当然这个逻辑非常虚拟,这意味着如果你停止在单词或句子中间的字符等等,你就不在乎了。
更新: 我提供的代码是一个通用的思维过程,它不一定是复制/粘贴的东西。但是,从您粘贴的代码中,您可以尝试:
lastSplit + 140
更新后的II:使用虚拟书籍的工作代码(以说服你它有效!)
var fs = require('fs');
var book = fs.readFileSync('./test.txt');
var lastSplit = 0;
function tweet(book) {
var limit = book.length - lastSplit > 140 ? 140 : book.length - lastSplit;
var tweet = book.slice(lastSplit, lastSplit + limit);
lastSplit += limit;
return tweet;
}
while (lastSplit < book.length) {
console.log(tweet(book));
}
function tweet(book) {
var lastSplit = 0;
while (lastSplit < book.length) {
var limit = book.length - lastSplit > 140 ? 140 : book.length - lastSplit;
var tweet = book.slice(lastSplit, lastSplit + limit);
lastSplit += limit;
$('body').append('<p>' + tweet + '</p>');
}
}
// this will generate a dummy string containing numbers from 0-800
tweet(Array.apply(null, {length: 800}).map(Number.call, Number).join(''));