首页 文章

将JavaScript(nodeJS)字符串拆分为固定大小的块

提问于
浏览
1

我想在JavaScript中使用空格作为分隔符(即它不应该破坏单词)将字符串拆分为固定大小的块(每个140个字符), Note: It should handle newline character 目前我正在使用wordwrap npm包,但它不处理换行符 .

var wrap = require('wordwrap')(140)    
var str = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum"
console.log(wrap(str));

它适用于普通文本,但如果文本包含换行符,我会收到以下错误:
SyntaxError:意外的标记ILLEGAL
在exports.runInThisContext(vm.js:73:16)
在Module._compile(module.js:443:25)
在Object.Module._extensions..js(module.js:478:10)
在Module.load(module.js:355:32)
在Function.Module._load(module.js:310:12)
在Function.Module.runMain(module.js:501:10)
在启动时(node.js:129:16)
在node.js:814:3

1 回答

  • 2
    // define string variable
    var string = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum"
    
    function sliceMyString(str){
    // initialize array (not required but verbose)
        var slices = [];
    
    // while string is not empty
    // take 140 characters
    // check witch one was the last space or if the end of the line is reached
    // then => push them in slices
    // then => remove them from the string
    
        while(str != ''){
            var lastSpace = 0;
    
            for(var i = 0; i < str.length && i < 140; i ++){
                if(str[i] == ' '){
                    lastSpace = i;
                }
                if(i == str.length - 1){
                    lastSpace = str.length;
                }
            }
    
    // insert into array (including trailing space, see below the codeblock)
            slices.push(str.slice(0, lastSpace));
            str = str.slice(lastSpace);
        }
    
    // just logging the variables in the slices array
    
        slices.map(function(slice){
            console.log(slice);
        });
    }
    
    sliceMyString(string);
    

    如果要删除尾随空格,可以使用 trim()

    slices.push(str.slice(0, lastSpace).trim());
    

相关问题