代码之家  ›  专栏  ›  技术社区  ›  Naveed

如何在jQuery中知道字符串以特定字符串开头/结尾?

  •  195
  • Naveed  · 技术社区  · 14 年前

    我想知道在jQuery中字符串是以指定的字符/字符串开头还是以它结尾。

    例如:

    var str = 'Hello World';
    
    if( str starts with 'Hello' ) {
       alert('true');
    } else {
       alert('false');
    }
    
    if( str ends with 'World' ) {
       alert('true');
    } else {
       alert('false');
    }
    

    如果没有任何功能,那么还有其他选择吗?

    6 回复  |  直到 12 年前
        1
  •  397
  •   worldofjr lola_the_coding_girl    8 年前

    一种选择是使用正则表达式:

    if (str.match("^Hello")) {
       // do this if begins with Hello
    }
    
    if (str.match("World$")) {
       // do this if ends in world
    }
    
        2
  •  98
  •   Community Justin Hirsch    7 年前

    对于startswith,可以使用以下索引:

    if(str.indexOf('Hello') == 0) {
    

    ...

    ref

    你可以根据字符串的长度来计算“endswith”。

    if(str.lastIndexOf('Hello') == str.length - 'Hello'.length) {
    
        3
  •  23
  •   Sebastien P.    14 年前

    这不需要jQuery来完成。您可以编写jQuery包装器,但它是无用的,因此您应该更好地使用它

    var str = "Hello World";
    
    window.alert("Starts with Hello ? " + /^Hello/i.test(str));        
    
    window.alert("Ends with Hello ? " + /Hello$/i.test(str));
    

    因为match()方法已弃用。

    PS:RegExp中的“i”标志是可选的,表示不区分大小写(因此对于“hello”、“hello”等也将返回true)。

        4
  •  16
  •   isherwood    9 年前

    对于这样的任务,实际上并不需要jQuery。在ES6规范中,他们已经有了现成的方法 startsWith endsWith .

    var str = "To be, or not to be, that is the question.";
    alert(str.startsWith("To be"));         // true
    alert(str.startsWith("not to be"));     // false
    alert(str.startsWith("not to be", 10)); // true
    
    var str = "To be, or not to be, that is the question.";
    alert( str.endsWith("question.") );  // true
    alert( str.endsWith("to be") );      // false
    alert( str.endsWith("to be", 19) );  // true
    

    Currently available in FF and Chrome . 对于旧浏览器,可以使用它们的polyfill或substr

        5
  •  10
  •   HoldOffHunger Lux    6 年前

    你可以一直延伸 String 原型如下:

    //  Checks that string starts with the specific string
    if (typeof String.prototype.startsWith != 'function') {
        String.prototype.startsWith = function (str) {
            return this.slice(0, str.length) == str;
        };
    }
    
    //  Checks that string ends with the specific string...
    if (typeof String.prototype.endsWith != 'function') {
        String.prototype.endsWith = function (str) {
            return this.slice(-str.length) == str;
        };
    }
    

    像这样使用:

    var str = 'Hello World';
    
    if( str.startsWith('Hello') ) {
       // your string starts with 'Hello'
    }
    
    if( str.endsWith('World') ) {
       // your string ends with 'World'
    }
    
        6
  •  2
  •   Community Justin Hirsch    6 年前

    ES6现在支持 startsWith() endsWith() 检查项目开始和结束的方法 string s、 如果您想支持es6之前的引擎,您可能需要考虑将建议的方法之一添加到 String 原型。

    if (typeof String.prototype.startsWith != 'function') {
      String.prototype.startsWith = function (str) {
        return this.match(new RegExp("^" + str));
      };
    }
    
    if (typeof String.prototype.endsWith != 'function') {
      String.prototype.endsWith = function (str) {
        return this.match(new RegExp(str + "$"));
      };
    }
    
    var str = "foobar is not barfoo";
    console.log(str.startsWith("foob"); // true
    console.log(str.endsWith("rfoo");   // true