如何使用JavaScript分割长单词?我不是在寻找像word-break: break-all
这样的CSS解决方案。目的是用长字插入空格,以将它们分成较小的部分。解决方案应尽可能快,因为它将在几秒钟内被调用数千次。
该解决方案应如何工作的示例:
splitString("This is an exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxample string.");
=> This is an exxxxxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxxample string.
splitString("AnotherExammmmmmmmmmmpleeeeeeeeeeeeeeeee");
=> AnotherExammmmmm mmmmmpleeeeeee eeeeeeeeee
任何太长的单词都用空格字符分隔。
如果生成的片段的长度大致相等,那就更好了。
最佳答案
由于您要求性能,因此我比较了正则表达式方法:
function splitString(str, length) {
var regex = new RegExp("/(\w{" + length + "})(?=\w)/g");
return str.replace(regex, "$1 ");
}
用这个相对简单的手工解决方案:
function splitString(str, length) {
var words = str.split(" ");
for (var j = 0; j < words.length; j++) {
var l = words[j].length;
if (l > length) {
var result = [], i = 0;
while (i < l) {
result.push(words[j].substr(i, length))
i += length;
}
words[j] = result.join(" ");
}
}
return words.join(" ");
}
JsPerf说,我的计算机(Mac Opera16)上的正则表达式版本大约快8%。因为这也更加简洁,所以我会去做。