我需要将JavaScript中的字符串拆分为不超过100个字符的块,同时保留单词之间的中断。我在自己的个人图书馆中有一个函数,用于将一个字符串分块为100个字符的分段,但似乎无法将我的头围绕如何适应它,以避免在字词中间分裂。我认为可以使用正则表达式或其他东西来管理某些内容,但它并不适合我。对于任何解决方案的一个警告是它必须是纯粹的JavaScript,而不是jQuery,而且环境无法访问与浏览器相关的全局变量。将字符串分解成JavaScript中的最大字符部分
- 编辑 -
好吧,我已经写了一些代码,但我得到了奇怪的结果...
function chunkify(str) {
var wsRegEx = /\S/;
var wsEndRegEx = /\s$/;
var wsStartRegEx = /^\s/;
var chunks = new Array();
var startIndex = 0;
var endIndex = 100;
var totalChar = 0;
while (true) {
if (totalChar >= str.length) break;
var chunk = str.substr(startIndex,endIndex-startIndex);
while (wsStartRegEx.test(chunk)) {
startIndex++;
endIndex++;
totalChar++;
chunk = str.substr(startIndex,endIndex-startIndex);
}
if (!wsEndRegEx.test(chunk)) {
while (wsRegEx.test(chunk.charAt(endIndex))) {
endIndex--;
}
chunk = str.substr(startIndex,endIndex-startIndex);
}
chunks.push(chunk);
totalChar += chunk.length;
startIndex = endIndex;
endIndex += 100;
}
return chunks;
}
先前版本我张贴了不算大块正确,但这个版本,似乎正确地打破,现在打破中间词。
- 编辑#2 -
我想我现在工作的伟大。这似乎这样的伎俩:
function chunkify(str) {
var wsRegEx = /\S/;
var chunks = new Array();
var startIndex = 0;
var endIndex = 100;
while (startIndex < str.length) {
while (wsRegEx.test(str.charAt(endIndex))) {
endIndex--;
}
if (!wsRegEx.test(str.charAt(startIndex)))
startIndex++;
chunks.push(str.substr(startIndex, endIndex - startIndex));
startIndex = endIndex;
endIndex += 100;
}
return chunks;
}
有一个更清洁的方式来做到这一点,或者我已经得到了这是约高效,因为它会得到什么?
有什么你试过至今?任何代码? – Vandesh