2011-11-28 83 views
1
var string = abc123; 
string.split(*POSITION=3)??? 

有沒有辦法將這個字符串拆分爲一個字符串數組,即[abc,123]split方法是否正確使用?Javascript拆分方法

+1

split()需要一個分隔符才能工作。 – nickd

回答

2

我想說的split方法在這裏使用了正確的事情,因爲它的目的是段基於一定字符的字符串。

你當然可以寫自己的功能,當然:

function partition(str, index) { 
    return [str.substring(0, index), str.substring(index)]; 
} 

// results in ["123", "abc"] 
var parts = partition("123abc", 3); 

如果你想寫"123abc".partition(3)相反,你可以做到這一點通過擴展String.prototype

String.prototype.partition = function(index) { 
    return [this.substring(0, index), this.substring(index)]; 
}; 

就個人而言,雖然,我建議避免這種類型的搜索(如果你想了解其他人對該主題的評論,可以在網上搜索「用JavaScript擴展內置對象」)。

+0

只是好奇(因爲我看到這個時間),如果你不建議通過擴展原型來做到這一點,爲什麼不按照你推薦的方式來做呢?例如:function partionString(str,index){... – rob

+0

我非常懷疑這是OP想要的東西......'''你好朋友'.partition(3) [「hel」,「lo friend」]'doesn' t爲我分配'* POSITION = 3'。再次,'* POSITION = 3'非常容易解釋:D只是把它放在那裏。 – Esailija

+0

@rob:完全公平點;我相應地更新了我的答案。 –

0

沒有,但它是微不足道的實施是:

function splitn(str, n){ 
var r = [], offset = 0, l = str.length; 

    while(offset < l) { 
    r.push(str.substr(offset, n)); 
    offset += n; 
    } 
return r; 
} 

然後:

var string = "abc123"; 
console.log(splitn(string, 3)); 
//["abc", "123"] 

假設你想要類似的功能str_split

1

也許用一個簡單的RegExp比賽?

var arr = "abc123".match(/^([a-z]+)(\d+)$/i); 
arr.shift(); 

console.log(arr); 
1
var arr = "this is a test".match(/.{1,3}/g);