Javascript 如何在x个字符或更少的位置拆分行,并且仅在空格处拆分行?

Javascript 如何在x个字符或更少的位置拆分行,并且仅在空格处拆分行?,javascript,Javascript,我正在创建一个程序,该程序在x个字符处分割行,并且只在空格(“”)处分割行 输入段落: 那天不可能去散步。事实上,我们早上在一片没有叶子的灌木丛里徘徊了一个小时;但是自从吃过晚饭(里德太太没有客人时,吃得很早)起,寒冷的寒风就带来了阴沉的云彩和阴沉的雨水 输入拆分字符:30 现在我得到如下输出: var textArray = ["There was no possibility of ta","king a walk that day. We had b","een wandering, in

我正在创建一个程序,该程序在x个字符处分割行,并且只在空格(“”)处分割行

输入段落:

那天不可能去散步。事实上,我们早上在一片没有叶子的灌木丛里徘徊了一个小时;但是自从吃过晚饭(里德太太没有客人时,吃得很早)起,寒冷的寒风就带来了阴沉的云彩和阴沉的雨水

输入拆分字符:30

现在我得到如下输出:

var textArray = ["There was no possibility of ta","king a walk that day. We had b","een wandering, indeed, in the ","leafless shrubbery an hour in ","the morning; but since dinner ","(Mrs. Reed, when there was no ","company, dined early) the cold"," winter wind had brought with ","it clouds so sombre, and a rai","n so "]`
var textArray = ["There was no possibility of", "taking a walk that day. We", "had been wandering, indeed, in", "the leafless shrubbery an hour", "in the morning; but since", "dinner (Mrs. Reed, when there", "was no company, dined early)", "the cold winter wind had", "brought with it clouds so", "sombre, and a rain so", "penetrating, that further", "out-door exercise was now out", "of the question."]`
但我只想在空格()处拆分。它在指定字符数之前的最后一个空格处拆分

我想要这样的输出:

var textArray = ["There was no possibility of ta","king a walk that day. We had b","een wandering, indeed, in the ","leafless shrubbery an hour in ","the morning; but since dinner ","(Mrs. Reed, when there was no ","company, dined early) the cold"," winter wind had brought with ","it clouds so sombre, and a rai","n so "]`
var textArray = ["There was no possibility of", "taking a walk that day. We", "had been wandering, indeed, in", "the leafless shrubbery an hour", "in the morning; but since", "dinner (Mrs. Reed, when there", "was no company, dined early)", "the cold winter wind had", "brought with it clouds so", "sombre, and a rain so", "penetrating, that further", "out-door exercise was now out", "of the question."]`
我尝试了以下代码:

function textToArray() {
       var str = document.getElementById('stringg').value;
       var strArr = [];
       var count = parseInt(document.getElementById('numberOfWords').value, 10) || 1;

       for (var i = 0; i < str.length; i = i + count) {
            var j = i + count;
            strArr.push(str.substring(i,j));
       }
}
函数textToArray(){
var str=document.getElementById('stringg').value;
var-strArr=[];
var count=parseInt(document.getElementById('numberOfWords')。值,10)| 1;
对于(变量i=0;i
您可以使用array.reduce:

var str=“那天不可能去散步。事实上,我们早上在没有叶子的灌木丛中徘徊了一个小时;但是自从晚饭后(里德太太,没有人陪伴的时候,吃得很早),寒冷的冬风带来了阴沉的云层和阴沉的雨”;
str=str.split(“”)。reduce((m,o)=>{
var last=m[m.长度-1];
如果(最后一个和最后一个长度+o.length<30){
m[m.length-1]=`${last}${o}`;
}否则{
m、 推(o);
}
返回m;
}, []);
console.log(str)尝试这种方法(内联注释)

var input=“那天不可能去散步。事实上,我们早上在没有叶子的灌木丛中徘徊了一个小时;但是自从晚饭后(里德夫人,没有人陪伴时,吃得很早),寒冷的冬风带来了乌云密布,雨下得很大”;
函数拆分器(输入,maxChars){
var输出=[];
output.push(输入.split(“”).reduce(函数a,b){
如果(a.长度+b.长度<最大字符){
a+=“”+b;//如果指定的长度仍未执行,请将其添加到a
}否则{
output.push(a);//如果组合的less超过了maxchars,则将最后一句推送到output
a=b;
}
返回a;
}));//将余数推送到输出
返回输出;
}

日志(拆分器(输入,30))我将在文本上循环,确定当前字符的一部分是有效分隔符,如果不是,则查找最近的空格

const
input='那天不可能去散步。事实上,我们早上在一片没有叶子的灌木丛里徘徊了一个小时;但是自从吃过晚饭(里德太太没有客人时,吃得很早),寒冷的寒风带来了阴沉的云彩和阴沉的雨水;
函数拆分文本(文本,最大长度=30){
常数
结果=[];
//保持循环,直到输入字符串为空。
而(文本!=''){
//将endIndex初始化为子字符串的指定最大长度。
让
endIndex;
//答:如果最大长度大于剩余文本长度,请调整
//结束索引,使其与剩余文本长度一致。
//B:否则,请检查最大长度处的字符是否不是空格
//case go寻找尽可能接近最大长度的空间。
如果(maxLength>text.length){/[A]
endIndex=text.length;
}else if(text.substring(maxLength,1)!=''{/[B}
endIndex=text.lastIndexOf(“”,maxLength);
}否则{
endIndex=maxLength;
}
//获取具有确定长度的字符串并将其放置在结果数组中。
push(text.substring(0,endIndex));
//调整输入字符串,移除刚刚推入结果的部分。
text=text.substr(endIndex.trim();
}
返回结果;
}

console.log(splitText(input));
您可以获取数组的最后一个元素,检查长度是否小于/equa,然后将临时字符串合并到结果集中,否则将最后一个字符串和实际项合并到结果集中

var string=“那天不可能出去散步。的确,我们早上在没有叶子的灌木丛中徘徊了一个小时;但是自从晚饭后(里德太太,没有人陪伴的时候,吃饭很早),寒冷的冬风带来了阴沉的云层和阴沉的雨”;
string=string.split(“”).reduce(函数(r,a){
var last=r.pop()| |“”,
温度=最后一个+(最后一个和“)+a;

返回r.concat(temp.length你已经尝试过什么?你有一些代码给我们看吗?你为什么不把它按单词分开?30个字符=5或6个单词。把整个字符串按空格分开,每5个索引一个。请检查我的更新问题@jordumusin这难道不好笑吗?仅仅添加一点点代码,突然给你3个答案?;)我对各种解决方案的性能很好奇,所以我制作了一个JSPerf来测试它们。我从代码中删除了注释,这样就不会占用不必要的解析时间。有关基准测试,请参见此处: