2013-05-09 43 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

相關問題