如何在JavaScript中将文本格式化为多行

时间:2018-12-07 03:58:31

标签: javascript string formatting

我要做的是有一个文本“框”,该框具有一定的行长,而没有将任何单词切成两半。 此刻我想做的是将文本切成n个长度的行,然后我试图通过知道下一个空格是何时来修复单词。 这是我目前所拥有的,但是它不能完全正常工作,只能修复某些单词

function TextBox(length,text){
  array = [];
  test = /[A-Za-z]+/g;
  //cutting the text up
  for (i= 0;i < Math.ceil(text.length / length); i ++){
    array.push(text.slice(i * length,Math.min((i + 1) * length,text.length)));
  }
  //in case it ruins the lines the first time round
  for (z = 0; z < 3; z++){
    //reformatting the code
    for (i = 0; i < array.length - 1; i ++){
      if (test.test(array[i][array[i].length - 1])){
        array[i] += array[i+1].substr(0,array[i+1].indexOf(' ') + 1);
        array[i + 1] = array[i + 1].substr(array[i + 1].indexOf(' ') + 1);
      }
    }
  }
  //for debugging
  console.log(array);
}
TextBox(5,"i like to eat cheese when I am hungry");

编辑  输入的示例是:  “我饿时喜欢吃奶酪”  我想要类似的东西:  [  “我喜欢”,  “去吃”,  “起司”,  “当我”,  “饿了”  ]  我现在要出去的是:  [ '我喜欢 ',   '至 ',   “吃c”,请注意奶酪中的“ c”   “ heese”,   ' 什么时候 ',   '我是 ',   “挂”,   'ry']和饥饿的“ ry”

行长大约n个字符(在此示例中为5个字符)。

我尝试添加和删除多余的for循环,但是据我所知,这有助于格式化它。

如果您知道我在做错什么,或者更简单的方法来做,那会很好。

2 个答案:

答案 0 :(得分:1)

一种选择是构造一个在5个字符,4个字符或7个字符等之间交替的正则表达式:

bfctools

在这些变更之前加上

 Route::get('coin/search/{keyword?}', ['uses' => 'Coins@doSearch'])->name('coin.search');
 Route::resource('coin' , 'Coins');

确保匹配的行不以空格开头,并以//结束替换

.....   // 5 characters
....    // 4 characters
......  // 6 characters
...     // 3 characters
....... // 7 characters

确保匹配在空格(或字符串的结尾)之前结束。

然后,您要做的就是在输入上执行模式(?! )

(?= |$)

答案 1 :(得分:1)

这是仅使用数组split().reduce()

的另一种方法

function TextBox(length,text){
  var array = [];  
  
  text.split(' ').reduce(function(prev, cur) {
    var next = [prev, cur].join(' ').trim();
    
    if (next.length <= length) {
    	return next;
    } else {
    	array.push(next);
    	return '';
    }
  });   
  
  console.log(array);
}

TextBox(5, 'i like to eat cheese when I am hungry');

TextBox(8, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum')