2013-05-09 48 views
-1

我得到的结果类似demo.in,demo.co.in,demo.tv,demo.org.in 我需要分别采用分体式扩展JavaScript的分裂功能我需要获得最后两个数值后点使用JavaScript分裂

var vsp = i.split("."); 

这是我的代码,我会得到的结果作为 演示,在演示中,合作,在

,但我需要扩展独立

+0

如果是“foo.example.com”? – epascarello 2013-05-09 12:48:33

+1

你叫什么“延期”?你只是想要在最后一段(。)之后或第一段之后的部分? – RobG 2013-05-09 12:50:06

回答

3

Working fiddle(演示版)

var values = [ 
     "demo.in", 
     "demo.co.in", 
     "demo.tv","demo.org" 
    ]; 
    var results = []; 
    // iterate through the values 
    for (var i = 0, len = values.length; i < len; i++) { 

     // Split the parts on every dot. 
     var parts = values[i].split("."); 

     // Remove the first part (before the first dot). 
     parts = parts.slice(1, parts.length); 

     // Join the results together 
     results.push(parts.join(".")); 
    }; 
    console.dir(results); // all done 

    // Nicely display the values for the OP: 
    for (var i = 0, len = results.length; i < len; i++) { 
     document.body.innerHTML += (i + 1) + ": " + results[i] + "<br />"; 
    }; 
+0

为什么'\ .'?有必要吗? – 2013-05-09 12:38:49

+0

@ alex23- [分裂](http://ecma-international.org/ecma-262/5.1/#sec-15.5.4.14)取*分离器*该“可以是任何长度的字符串,或者它可以是RegExp对象“。没有必要逃避“。”如果该值是一个字符串,它在你的答案中。 – RobG 2013-05-09 12:45:05

+0

@ alex23 - 你的答案不使用正则表达式,它使用字符串。 – RobG 2013-05-09 12:48:06

0

试试这个:

var vsp = i.split("."); 
for(var i=0; i< vsp.length; i++){ 
    if(i !== 0){ //leaving the first match 
     // do something with vsp[i] 
    } 
} 

我希望你不考虑www也。 :)。如果是这样,那么保持i>1而不是i !== 0

0

有几种方法可以做到这一点(可能没有那么容易,因为它应该是)。你可以定义一个函数是这样的:

function mySplit(str, delim) { 
    var idx = (str.indexOf(delim) == -1) ? str.indexOf(delim) : str.length; 
    return [str.substr(0,idx), str.substr(idx)]; 
} 

然后调用它像:var sp = mySplit(i, ".");

1

我不能确切理解.. “扩展”。你可以尝试像下面的代码

var urls = "demo,demo.in,my.demo.co.in,demo.tv,demo.org.in" 
      .split(','); 

var splited = urls.reduce(function(o, n){ 
    var parts = n.split('.'); 

    o[ n ] = (function(){ 
     var ext = []; 
     while(!(parts.length == 1 || ext.length == 2)) { 
      ext.unshift(parts.pop());  
     }; 
     return ext.join('.'); 
    }()); 

    return o; 
}, {}); 

console.log(JSON.stringify(splited)); 

它打印使用

for(var i in splited) { 
    console.log(i, splited[i]); 
} 
0

您还可以使用lastIndexOf,返回最后.的位置和

{ 
    "demo":"", 
    "demo.in":"in", 
    "my.demo.co.in":"co.in", 
    "demo.tv":"tv", 
    "demo.org.in":"org.in" 
} 

处理结果从那里你可以使用substring获得字符串的其余部分。

function getExtension(hostName) { 
    var extension = null; 

    if(hostName && hostName.length > 0 && hostName.indexOf(".") !== -1) { 
    extension = hostName.substring(hostName.lastIndexOf(".") + 1); 
    } 

    return extension; 
} 

从那里,您可以在循环中使用此函数来获取许多主机名的扩展名。

编辑只注意到在标题中注明“最后两个值”部分:)谢谢@rab

+1

getExtension(“demo.org。''''return' in' – rab 2013-05-09 12:58:36

2

我不知道你想要什么,所以这里的一些功能,以覆盖可能的情况:

var s = 'demo.co.in' 

// Return everything before the first '.' 
function getExtension(s) { 
    var m = s.match(/^[^.]+/); 
    return m? m[0] : ''; 
} 

alert(getExtension(s)); // demo 


// Return everything after the last '.' 
function getExtension2(s) { 
    var m = s.match(/[^.]+$/); 
    return m? m[0] : ''; 
} 

alert(getExtension2(s)); // in 


// Return everything after the first '.' 
function getExtension3(s) { 
    return s.replace(/^[^.]+\./, ''); 
} 

alert(getExtension3(s)); // co.in 
+0

我也不知道他想要什么:) – rab 2013-05-09 13:10:43

相关问题