Javascript仅使用最后一个拆分参数拆分字符串

时间:2013-06-10 07:56:14

标签: javascript

我想要获得的一个例子:

String1 - 'string.co.uk' - would return 'string' and 'co.uk'
String2 - 'random.words.string.co.uk' - would return 'string` and 'co.uk'

我目前有这个:

var split= [];
var tld_part = domain_name.split(".");
var sld_parts = domain_name.split(".")[0];
tld_part = tld_part.slice(1, tld_part.length);
split.push(sld_parts);
split.push(tld_part.join("."));

使用我当前的代码,它从一开始就采用split参数,如果可能的话我想要反转它。使用我当前的代码,它执行此操作:

String1 - 'string.co.uk' - returns 'string' and 'co.uk'
String2 - 'random.words.string.co.uk' - would return 'random` and 'words.string.co.uk'

有什么建议吗?

4 个答案:

答案 0 :(得分:2)

扩大对elclanrs的评论:

function getParts(str) {
    var temp = str.split('.').slice(-3) // grabs the last 3 elements
    return {
        tld_parts : [temp[1],temp[2]].join("."),
        sld_parts : temp[0]
    }
}

getParts("foo.bar.baz.co.uk")会返回{ tld_parts : "co.uk", sld_parts : "baz" }

getParts("i.got.99.terms.but.a.bit.aint.one.co.uk")会返回{ tld_parts : "co.uk", sld_parts : "one" }

答案 1 :(得分:0)

想到的一种方法是以下

var tld_part = domain_name.split(".");
var name = tld_part[tld_part.length - 2];
var tld = tld_part[tld_part.length - 1] +"."+ tld_part[tld_part.length];

答案 2 :(得分:0)

试试这个

var str='string.co.uk'//or 'random.words.string.co.uk'
var part = str.split('.');
var result = part[part.length - 1].toString() + '.' + part[part.length - 1].toString();
alert(result);

答案 3 :(得分:0)

根据您的使用情况,执行直接拆分可能不是一个好主意 - 例如,上述代码如何处理.com甚至只是localhost?在这方面,我会走RegExp路线:

function stripSubdomains( str ){
  var regs; return (regs = /([^.]+)(\.co)?(\.[^.]+)$/i.exec( str ))
    ? regs[1] + (regs[2]||'') + regs[3]
    : str
  ;
};

正则表达警察 攻击之前因为不够具体而责备我,免责声明:

  

上述内容可以通过检查域名来加强,而不是检查^.,以检查域中允许的特定字符。然而,我个人对这些事情的看法是在捕获时更加开放,并且在以后的过滤点更加强硬......这可以让你留意人们可能会尝试的东西,因为您永远无法100%确定您的验证不会阻止有效请求 - 除非您有大量用户测试人员可供您使用。在一天结束时,这一切都取决于此代码的使用位置,因此以上仅为示例。