我需要使用javascript split获取dot之后的最后两个值

时间:2013-05-09 12:28:36

标签: javascript

我得到的结果如demo.in,demo.co.in,demo.tv,demo.org.in 我需要使用JavaScript分割功能

分别拆分扩展
var vsp = i.split(".");  

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

但我需要单独获得扩展

6 个答案:

答案 0 :(得分: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 />";
    };

答案 1 :(得分: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

答案 2 :(得分: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 ) );

打印

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

使用

处理结果
for( var i in splited ) { 
     console.log( i, splited[i]); 
}

答案 3 :(得分: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

答案 4 :(得分: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, ".");

答案 5 :(得分:0)

您还可以使用lastIndexOf,它返回上一个.的位置,然后您可以使用substring获取其余字符串。

function getExtension(hostName) {
  var extension = null;

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

  return extension;
}

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

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