作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一大块文本,我想将其拆分为一个数组,每个元素为一行,最多 50 个字符。如果字符串包含 \r
或 \n
,我希望它本身就是一个元素(而不是另一个字符串的一部分)。我对如何执行此操作感到有点困惑。
我试过了
lines = newVal.match(/^(\r\n|.){1,50}\b/g)
我也试过 underscore/lodash _.chunk
但这显然忽略了单词。但这只给了我第一场比赛。请帮忙。
最佳答案
试试这个:
result = lines.split(/(?=(\r\n))/g);
result.forEach(function(item,index,arr) {
if(item.length > 50) {
var more = item.match(/.{1,50}\b/g);
arr[index] = more[0];
for(var i=1; i<more.length; ++i) {
arr.splice(index+i, 0, more[i]);
}
}
});
这将首先按换行符将文本拆分为一个数组,然后进一步分解数组中的长行,同时保留单词。
关于javascript - 我如何在 JavaScript 中根据单词对字符串进行分块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34376728/
我是一名优秀的程序员,十分优秀!