2011-11-28 65 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);