2011-05-30 58 views
2

var myStr="AAAAAAA BBBBB CCCCC DDDDD...",這個字符串可以有不同長度的包含空格的單詞。如何切割字符串?如果我有一個字符串例如

我想要一個將字符串分配到數組中的函數,也就是將字符串切割爲數組中的元素, 其中數組的每個元素都包含字符串中的單詞,總長度(包括單詞之間的空格)少於10個字符長。

(數組的每個元素總是包含完整的單詞之間&空間,而不是削減從中間字)

我想:

var words=myStr.split(' '); 

然後....什麼是有效的方式,實行?

+0

你的意思是不再話會被瓜分,或從最終陣列排除? – 2011-05-30 07:41:29

+0

是的,更長的單詞將被切片,但總是由單詞之間的空格分開,數組中每個元素的總長度不應超過10個字符長。 – Leem 2011-05-30 07:42:20

+1

拆分是實現您想要的正確方法 - 出了什麼問題? – 2011-05-30 07:45:11

回答

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

是否允許正則表達式? – metaforce 2011-05-30 07:44:58

+0

@metaforce:是的確如此:[在MDC文檔上分割](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) – 2011-05-30 07:47:06

1

嘗試:

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

(從頭部,未測試)

+0

不,這不符合我的要求,例如,如果myStr ='AAA BB',你的函數將給出結果[「AAA」,「BB」],但是對於這種情況,結果應該是[「AAA BB 「],因爲長度超過10個字符長度 – Leem 2011-05-30 07:47:45

+0

試試這個正則表達式模式:/(\ s){10}/g – metaforce 2011-05-30 07:51:32

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:反映澄清要求

+0

另請注意:我認爲在關於「包括空格」在十個字符的範圍內。如果是這樣,一個簡單的正則表達式就是'\ S {1,10}',它將匹配任何最多十個非空格字符序列。 – 2011-05-30 07:56:10

+0

由於'AAAAAA BBBB'爲11個字符,所以OP希望''AAA BB''被分割爲'[「AAA BB」],但是「AAAAAA BBBB」爲'[「AAAAAA」,「BBBB」]。 – 2011-05-30 09:07:11