gpt4 book ai didi

javascript - 需要在尊重单词的同时将字符串分成 140 个字符的 block

转载 作者:行者123 更新时间:2023-11-29 22:05:02 33 4
gpt4 key购买 nike

我有一个非常简单的问题,但需要一个有效的解决方案。我有一个节点脚本,它打开一个文本文件,循环遍历每一行,如果超过 140 个字符但需要遵守单词边界,则对该行进行分块。这是我到目前为止所拥有的,但线条不受影响。我也试过 _.invoke(lines, function() { splitText(this); }; 但这也不影响行。有人能建议另一种方法吗?

var args = process.argv.splice(2),
fs = require('fs'),
_ = require('underscore'),
splitText;

splitText = function (textSegment) {
var len = 140, curr = len, prev = 0, output = [], currReverse;
while (textSegment[curr]) {
if (textSegment[curr++] == ' ') {
output.push(textSegment.substring(prev, curr));
prev = curr;
curr += len;
} else {
currReverse = curr;

do {
if (textSegment.substring(currReverse - 1, currReverse) == ' ') {
output.push(textSegment.substring(prev, currReverse));
prev = currReverse;
curr = currReverse + len;
break;
}
currReverse--;
} while (currReverse > prev);
}
}
output.push(textSegment.substring(prev));
return output;
}

text = fs.readFileSync(args[0], 'utf-8');

lines = text.split("\n");

lines = _.filter(lines, function (line) {
return line.length >= 100;
});

lines = _.map(lines, function (line) {
return splitText(line);
});

fs.writeFile(args[0], lines.join("\n"), function (err) {
if (err) throw err;
console.log('test');
});

最佳答案

我没有任何使用 underscore.js 的经验,但我确实知道一个相当简单的方法来解决这个问题:

function formatStr(text, len) {
len = len||140;
var i=0,
str, newline, breakpt,
formatted = '';

while (i+len<text.length) {
str = text.substr(i, len);
newline = str.indexOf('\n');
if (newline!=-1) {
formatted += str.substr(0,newline+1);
console.log(i,newline);
i += newline + 1;
continue;
}
breakpt = str.lastIndexOf(' ');
formatted += str.substr(0,breakpt) + '\n';
i+=breakpt+1;
}
// add last line to the end and return; credit to Charly
// for mentioning this was missing.
return formatted + text.substr(i);
}

DEMO

这个循环的作用如下:

  • 将接下来的 140 个字符存储在一个 var 中
  • 测试这个字符串中是否已经有任何换行符
    • 如果是这样,只需将字符串的那部分添加到格式化字符串中,然后从那里继续
  • 获取字符串变量中最后一个空格的索引
  • 将字符串的一部分附加到格式化字符串中的下一个空格
  • 最后返回格式化后的字符串。

关于javascript - 需要在尊重单词的同时将字符串分成 140 个字符的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21440072/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com