Si tengo una cadena por ej. var myStr="AAAAAAA BBBBB CCCCC DDDDD...", esta cadena puede tener varias longitudes que contengan palabras con espacios.

Me gustaría tener una función que especifique la cadena en una matriz, esa es la cadena se cortará en segmentos como elementos en la matriz, donde cada elemento de la matriz contiene las palabras de la cadena con una longitud total (incluido el espacio entre palabras ) menos de 10 caracteres de longitud.

(Cada elemento de la matriz siempre contiene palabras completas y espacio entre palabras, no corta palabras del medio)

Lo intenté:

var words=myStr.split(' ');

Entonces ... ¿cuál es la forma eficiente de implementar?

2
Leem 30 may. 2011 a las 11:38

3 respuestas

La mejor respuesta
var words = "AAAAAAA BBBBB  CCCCC   DDDDD\tEEEE \t FFFF".split(/\s+/);

Una vez que tenga las palabras, puede iterar sobre las palabras e insertar cada palabra en una nueva matriz de la siguiente manera:

EDITAR # 2

var words = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate, velit et luctus tristique, libero quam ornare ligula, sagittis consequat massa tellus vel nulla.".split(/\s+/);
var output = [words[0]];
for (var i = 1; i < words.length; i++) {
  var word = words[i];
  var prev = output.pop();
  if ((prev + " " + word).length <= 10) {
    output.push(prev + " " + word);
  } else {
    output.push(prev);
    output.push(word);
  }
}
output;
// ["Lorem", "ipsum", "dolor sit", "amet,", "consectetur", "adipiscing", "elit. Sed", "vulputate,", "velit et", "luctus", "tristique,", "libero", "quam", "ornare", "ligula,", "sagittis", "consequat", "massa", "tellus vel", "nulla."]
0
Salman A 30 may. 2011 a las 09:00

Tratar:

var words = myStr.replace(/(\s)/g, ' ').split(' ');

(de la cabeza, no probado)

1
metaforce 30 may. 2011 a las 07:42

Por ejemplo:

var myStr = 'xxx yy wwwwww vvvv bbbbbbbbb cccccccccc a ddddddddddd eee';
var myArray = myStr.match(/.{1,10}(\s|$)|\S{1,10}(?!\s)/g);
for (var i in myArray) myArray[i] = myArray[i].replace(/\s+$/, '');
// myArray => [ 'xxx yy', 'wwwwww', 'vvvv', 'bbbbbbbbb', 'cccccccccc', 'a', 'dddddddddd', 'd eee' ]

Editar 2011-05-31: refleja requisitos aclarados

0
Matty K 31 may. 2011 a las 00:32