怎么剪弦?

时间:2011-05-30 07:38:34

标签: javascript javascript-events

如果我有一个字符串,例如var myStr="AAAAAAA BBBBB CCCCC DDDDD...",此字符串可以包含各种长度,包含带空格的单词。

我想有一个函数将字符串拼成一个数组,这个字符串将作为数组中的元素切割为segements, 其中数组的每个元素都包含字符串中的单词,其总长度(包括单词之间的空格)小于10个字符长。

(数组的每个元素总是包含完整的单词和单词之间的空格,而不是从中间剪切的单词)

我试过了:

var words=myStr.split(' ');
那么......实施的有效方法是什么?

3 个答案:

答案 0 :(得分:1)

尝试:

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

(来自头部,未经测试)

答案 1 :(得分:0)

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."]

答案 2 :(得分:0)

例如:

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:反映明确的要求