Javascript 将字符串拆分为每行36个字符的数组,但不打断单词

Javascript 将字符串拆分为每行36个字符的数组,但不打断单词,javascript,regex,split,Javascript,Regex,Split,我试图将一个字符串拆分为每个索引中36个字符的数组。此外,在拆分过程中,单词不应中断。我正在使用下面的代码拆分字符串而不打断单词,但这会在到达36后检查下一个空格。我的要求是,如果第一个索引达到36个字符,那么它应该检查该行中的前一个空格,并将该单词移动到数组中的下一个索引 例如,如果我有一个字符串“This is the new content For development”(这是用于开发的新内容),则应将其拆分为两行,如下所示: [0]-这是的新内容 [1] -开发 va

我试图将一个字符串拆分为每个索引中36个字符的数组。此外,在拆分过程中,单词不应中断。我正在使用下面的代码拆分字符串而不打断单词,但这会在到达36后检查下一个空格。我的要求是,如果第一个索引达到36个字符,那么它应该检查该行中的前一个空格,并将该单词移动到数组中的下一个索引

例如,如果我有一个字符串“This is the new content For development”(这是用于开发的新内容),则应将其拆分为两行,如下所示:

[0]-这是的新内容

[1] -开发

         var count; var len=36; 
         var curr = len; var prev = 0;          
         while (data[curr]) { 
                   if (data[curr++] == ' ') { 
                        splitArr.push(data.substring(prev,curr)); 
                         prev = curr; 
                          curr += len; 
                        } 
                      } 

        splitArr.push(data.substr(prev)); 
目前,下面的代码将其拆分为一行,如

[0]-这是开发的新内容

         var count; var len=36; 
         var curr = len; var prev = 0;          
         while (data[curr]) { 
                   if (data[curr++] == ' ') { 
                        splitArr.push(data.substring(prev,curr)); 
                         prev = curr; 
                          curr += len; 
                        } 
                      } 

        splitArr.push(data.substr(prev)); 
在if条件下,我可以使用什么来代替数据[curr++],以获得36个字符前的空白


提前谢谢你的帮助

就我个人而言,我会将字符串分解成单词,并将它们添加到批中,直到我们通过最大大小(
36
),然后开始新的批

我们使用
.split()
将字符串拆分为单词。我使用正则表达式而不是常规的
.split(“”
),因为我希望在拆分字符串时包含空格

当我们遍历这些项时,我们会查看最后一项。将此字符串添加到最后一项中是否超过36个字符?如果是,它将启动一个新项目。如果不是,则将其添加到上一个

为了迭代和组合这些项,我选择使用

const str=“这是一个演示,演示了您的代码如何处理较长的文本字符串。”;
常数charLimit=36;
让结果=str
.split(/(\s+/)
.减少((输出,项目)=>{
让last=output.pop()| |“”//获取最后一项
return last.length+item.length>charLimit//将当前项添加到其中是否会超过36个字符?
?[…输出,最后一个,项目]//是:启动新项目
:[…输出,最后+项]//否:添加到上一项
}, []);
console.log(“结果:”);
控制台日志(结果);
console.log(“长度:”);
log(result.map(i=>({string:i,length:i.length}));
console.log(“修剪:”);

log(result.map(i=>i.trim())我能想到的使用单词边界的最简单方法

(?:^|\b)[\w .]{1,36}(?:\b|$)
let str=`这是您的代码如何处理较长文本字符串的演示`
设op=str.match(/(?:^ |\b)[\w.]{1,36}(?:\b |$)/gi)

控制台。log(OP)< /代码>,但不考虑特殊字符。如果一个字符串有特殊字符,那么这个词本身就被打断了。在这方面有什么帮助吗?没有提到特殊人物的问题,所以我没有考虑这方面。但这很容易实现,您只需将[\w.]更改为[\w\w]我正在尝试使用正则表达式根据长度将字符串拆分为两部分,但带空格的内容被正确拆分,而不带空格的连续行不会拆分,它仍然是一行。示例:如何基于{1,48}将连续数字字符串拆分为两部分