我需要將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