[javascript] jQuery에서 문자열이 특정 문자열로 시작 / 종료된다는 것을 아는 방법은 무엇입니까?

문자열이 지정된 문자 / 문자열로 시작하거나 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');
}

기능이 없으면 다른 대안이 있습니까?



답변

한 가지 옵션은 정규식을 사용하는 것입니다.

if (str.match("^Hello")) {
   // do this if begins with Hello
}

if (str.match("World$")) {
   // do this if ends in world
}


답변

시작하려면 indexOf를 사용할 수 있습니다.

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

심판

문자열 길이를 기반으로 수학을 수행하여 ‘endswith’를 결정할 수 있습니다.

if(str.lastIndexOf('Hello') == str.length - 'Hello'.length) {


답변

이를 수행하기 위해 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를 리턴 함).


답변

이러한 작업에 실제로 jQuery가 필요하지 않습니다. ES6 사양에서는 이미 beginWithendsWith 메소드를 가지고 있습니다 .

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

현재 FF 및 Chrome에서 사용할 수 있습니다 . 오래된 브라우저의 경우 polyfill 또는 substr을 사용할 수 있습니다


답변

다음 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'
}


답변

ES6는 이제 s의 시작과 끝을 확인하기위한 startsWith()endsWith()방법을 지원합니다 string. pre-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


답변