-1

我得到了类似 demo.in、demo.co.in、demo.tv、demo.org.in 的结果我需要使用 JavaScript 拆分功能单独拆分扩展

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

这是我的代码,我将得到结果为 demo,in demo,co,in

但我需要单独获取扩展名

4

6 回答 6

3

工作小提琴(演示版)

    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 />";
    };
于 2013-05-09T12:35:11.763 回答
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
于 2013-05-09T13:09:20.173 回答
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]); 
}
于 2013-05-09T12:50:02.333 回答
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.

于 2013-05-09T12:33:46.930 回答
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, ".");

于 2013-05-09T12:43:42.490 回答
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

于 2013-05-09T12:55:25.390 回答