我已将另一个项目中提出的PHP脚本改编为可在JavaScript中使用,该脚本非常适合将文本缩短到设置的限制。我想用它也将其拆分为多个部分(如果超过了设置的限制)。

缩短一次的当前代码在这里:http://jsfiddle.net/WilliamIsted/P5jxK/

到目前为止,这是我的工作:http://jsfiddle.net/WilliamIsted/UkhXL/(我很确定我做得不好)

我已经陷入了很多到很多次的循环中,我不确定如何进行。

function strTruncate($string, $your_desired_width) {

    arr = [];

    if (typeof($last_part)) {
        $last_part = 0;
    }

    $parts = $string.split(/([\s\n\r]+)/);
    $parts_count = $parts.length;

    $length = 0;
    $last_part = 0;
    for (; $last_part < $parts_count; ++$last_part) {
        $length += $parts[$last_part].length;
        if ($length > $your_desired_width) {
            break;
        }
    }

    $start_part = 0;

    return $parts.slice($start_part, $last_part).join('');

}


缩短一次结果:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer malesuada, est ut interdum ullamcorper, metus lorem interdum ipsum, vitae


新的预期结果:

array[0] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer malesuada, est ut interdum ullamcorper, metus lorem interdum ipsum, vitae",
array[1] = "vulputate ante quam ut augue. Praesent sit amet varius lorem. Aliquam odio nunc, mattis in mollis vitae, laoreet non velit. Curabitur"
array[2] = "adipiscing, nisl tincidunt consequat ornare, ligula mauris sed."

最佳答案

我相信您正在寻找的是这样的脚本:

function strSplitOnLength(data, your_desired_width) {
    if(data.length <= 0)
        return [];  // return an empty array

    var splitData = data.split(/([\s\n\r]+)/);
    var arr = [];
    var cnt = 0;
    for (var i = 0; i < splitData.length; ++i) {
        if (!arr[cnt]) arr[cnt] = '';  //Instantiate array entry to empty string if null or undefined

        if (your_desired_width < (splitData[i].length + arr[cnt].length))
            cnt++;

        arr[cnt] += splitData[i];
    }

    return arr;
}

strSplitOnLength('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer malesuada, est ut interdum ullamcorper, metus lorem interdum ipsum, vitae vulputate ante quam ut augue. Praesent sit amet varius lorem. Aliquam odio nunc, mattis in mollis vitae, laoreet non velit. Curabitur adipiscing, nisl tincidunt consequat ornare, ligula mauris sed.', 140);​

关于javascript - 将文本分成多个部分JavaScript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13500731/

10-09 21:10
查看更多