Как разрезать строку? - PullRequest
2 голосов
/ 30 мая 2011

если у меня есть строка, например var myStr="AAAAAAA BBBBB CCCCC DDDDD...", эта строка может иметь различную длину, содержать слова с пробелами.

Я хотел бы иметь функцию, которая будет разбивать строку на массив, то есть строка будет разрезана на сегменты как элементы в массиве, где каждый элемент массива содержит слова из строки общей длиной (включая пробел между словами) длиной менее 10 символов.

(каждый элемент массива всегда содержит полные слова и пробел между словами, а не вырезанное слово из середины)

Я пытался:

var words=myStr.split(' ');

тогда .... какой эффективный способ реализовать?

Ответы [ 3 ]

1 голос
/ 30 мая 2011

попробовать:

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

(из головы, не проверено)

0 голосов
/ 30 мая 2011

Например:

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' ]

Изменить 2011-05-31: отражает уточненные требования

0 голосов
/ 30 мая 2011
var words = "AAAAAAA BBBBB  CCCCC   DDDDD\tEEEE \t FFFF".split(/\s+/);

Когда у вас есть слова, вы можете перебирать слова и вставлять каждое слово в новый массив следующим образом:

РЕДАКТИРОВАТЬ # 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."]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...