关于javascript:检查字符串是否以某些东西开头?

Check if string begins with something?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Javascript StartsWith

我知道我可以像^=那样看一个ID是否以某个东西开头,我尝试将它用于此,但它不起作用…基本上,我正在检索URL,我想为以某种方式开始的路径名的元素设置一个类…

所以,

1
var pathname = window.location.pathname;  //gives me /sub/1/train/yonks/459087

我想确保对于以/sub/1开头的每个路径,我都可以为元素设置一个类…

1
2
if(pathname ^= '/sub/1') {  //this didn't work...
        ...


使用StringObject.SubString

1
2
3
if (pathname.substring(0, 6) =="/sub/1") {
    // ...
}


1
2
3
4
String.prototype.startsWith = function(needle)
{
    return this.indexOf(needle) === 0;
};


您也可以使用string.match()和正则表达式:

1
if(pathname.match(/^\/sub\/1/)) { // you need to escape the slashes

如果找到匹配的子字符串,string.match()将返回一个数组,否则为空。


更具可重用性的功能:

1
2
3
beginsWith = function(needle, haystack){
    return (haystack.substr(0, needle.length) == needle);
}

首先,让我们扩展字符串对象。多亏了RicardoPeres的原型,我认为在使变量"string"更易读的上下文中,使用变量"string"比使用"needle"效果更好。

1
2
3
String.prototype.beginsWith = function (string) {
    return(this.indexOf(string) === 0);
};

然后像这样使用它。小心!使代码非常可读。

1
2
3
4
var pathname = window.location.pathname;
if (pathname.beginsWith('/sub/1')) {
    // Do stuff here
}


看看javascript substring()方法。