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?
3 respuestas
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."]
Tratar:
var words = myStr.replace(/(\s)/g, ' ').split(' ');
(de la cabeza, no probado)
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
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.