JS - 删除字符串之前/之后的所有字符(并保留该字符串)?

时间:2013-03-23 03:44:18

标签: javascript split substring

我已经看到了一些在特定字符后删除字符的结果 - 我的问题是如何用字符串执行此操作?

基本上,这适用于任何给定的数据字符串,但我们需要一个URL: stackoverflow.com/question

使用给定的字符串,在JS中,我想删除“.com”之后的所有内容,将“.com”分配给变量,并将“.com”之前的文本分配给单独的变量。

所以,最终结果:var x = "stackoverlow" var y = ".com"


到目前为止我做了什么: 1)使用split,substring等组合我可以删除它们,但不能删除部分“.com”字符串。我很确定我能用subtring和split做我想做的事情,我想我只是错误地实现了它。 2)我正在使用indexOf在完整字符串

中找到字符串“.com”

任何提示?我没有发布我的实际代码,因为它已经变得如此混乱,我已经尝试了所有不同的东西(如果有必要,我可以继续这样做)。

谢谢!

3 个答案:

答案 0 :(得分:1)

使用正则表达式。

"stackoverflow.com".match(/(.+)(\.com)/)

结果

["stackoverflow.com", "stackoverflow", ".com"]

(为什么要将.com分配给变量?

答案 1 :(得分:1)

你应该真正研究正则表达式。

以下是一些可以获得您要做的事情的代码:

var s = 'stackoverflow.com/question';

var re = /(.+)(\.com)(.+)/;

var result = s.match(re); 

if (result && result.length >= 3) {

    var x = result[1], //"stackoverlow"
        y = result[2]; //".com"

    console.log('x: ' + x);
    console.log('y: ' + y);
}

答案 2 :(得分:0)

"stackoverflow.com".split(/\b(?=\.)/) => ["stackoverflow", ".com"]

或者,

"stackoverflow.com/question".split(/\b(?=\.)|(?=\/)/)
=> ["stackoverflow", ".com", "/question"]