如何切割字符串?如果我有一个字符串例如
var myStr="AAAAAAA BBBBB CCCCC DDDDD..."
,这个字符串可以有不同长度的包含空格的单词。如何切割字符串?如果我有一个字符串例如
我想要一个将字符串分配到数组中的函数,也就是将字符串切割为数组中的元素, 其中数组的每个元素都包含字符串中的单词,总长度(包括单词之间的空格)少于10个字符长。
(数组的每个元素总是包含完整的单词之间&空间,而不是削减从中间字)
我想:
var words=myStr.split(' ');
然后....什么是有效的方式,实行?
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."]
是否允许正则表达式? – metaforce 2011-05-30 07:44:58
@metaforce:是的确如此:[在MDC文档上分割](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) – 2011-05-30 07:47:06
例如:
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:反映澄清要求
另请注意:我认为在关于“包括空格”在十个字符的范围内。如果是这样,一个简单的正则表达式就是'\ S {1,10}',它将匹配任何最多十个非空格字符序列。 – 2011-05-30 07:56:10
由于'AAAAAA BBBB'为11个字符,所以OP希望''AAA BB''被分割为'[“AAA BB”],但是“AAAAAA BBBB”为'[“AAAAAA”,“BBBB”]。 – 2011-05-30 09:07:11
你的意思是不再话会被瓜分,或从最终阵列排除? – 2011-05-30 07:41:29
是的,更长的单词将被切片,但总是由单词之间的空格分开,数组中每个元素的总长度不应超过10个字符长。 – Leem 2011-05-30 07:42:20
拆分是实现您想要的正确方法 - 出了什么问题? – 2011-05-30 07:45:11