在\ n char处拆分字符串,但最多为n个字符

时间:2016-05-21 10:45:31

标签: javascript string split

在javascript中我需要在max 320 char的子字符串中拆分一个未知长度的字符串,但是在\n的最后一次出现之后总是试图剪切,以使每个字符串"用户友好" - 每个字符串都是facebook消息..

示例,来自:

  

Ecco il tuo carrello:
•Frittata di spinaci dell' artusi
•   Frittata di spinaci dell&artusi
•Frittata di spinaci dell' artusi
•   Frittata di spinaci dell&artusi
•Frittata di spinaci dell' artusi
•   Frittata di spinaci dell&artusi
•Frittata di spinaci dell' artusi
•   Frittata di spinaci dell&artusi
•Frittata di spinaci dell' artusi
•   Frittata di spinaci dell&artusi
•Frittata di spinaci dell' artusi
•   Frittata di spinaci dell&artusi
•Frittata di spinaci dell' artusi
•   Frittata di spinaci dell&artusi
•Frittata di spinaci dell' artusi

为:

  

Ecco il tuo carrello:
•Frittata di spinaci dell' artusi
•Frittata di   spinaci dell' artusi
•Frittata di spinaci dell' artusi
•Frittata di   spinaci dell' artusi
•Frittata di spinaci dell' artusi
•Frittata di   spinaci dell' artusi
•Frittata di spinaci dell' artusi
•Frittata di   spinaci dell' artusi

  

•Frittata di spinaci dell' artusi
•Frittata di spinaci dell' artusi
•   Frittata di spinaci dell&artusi
•Frittata di spinaci dell' artusi
•   Frittata di spinaci dell' artusi
•Frittata di spinaci dell' artusi

1 个答案:

答案 0 :(得分:2)

我的方法就是这样。

  • 将所有行都放入数组中。 (lines
  • 在索引0处的另一个数组(reduced)中依次添加每一行,直到添加下一行,总长度超过320个字符。
  • 一旦索引0处的字符串达到限制以接受,不再有行移动到索引1并继续相同的方式。



var text = "Ecco il tuo carrello:\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi\n• Frittata di spinaci dell'artusi",
   lines = text.split("\n"),
       i = 0,
 reduced = lines.reduce((p,c) => { p[i].length + c.length <= 320 ? p[i]+= c + "\n"
                                                                 : p[++i] = c + "\n";
                                   return p;},[""]);
console.log(reduced);
console.log(reduced[0].length);
console.log(reduced[1].length);
&#13;
&#13;
&#13;