如何使用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%。因为这也更加简洁,所以我会去做。

10-07 23:13