프로그래밍 언어/HTML,CSS,JS

JavaScript에서 endsWith

Rateye 2021. 9. 9. 12:20
728x90
반응형
질문 : JavaScript에서 endsWith

JavaScript에서 문자열이 특정 문자로 끝나는 지 어떻게 확인할 수 있습니까?

예 : 문자열이 있습니다

var str = "mystring#";

# 로 끝나는 지 알고 싶습니다. 어떻게 확인할 수 있습니까?

  1. endsWith() 메소드가 있습니까?
  2. 내가 가진 한 가지 해결책은 문자열의 길이를 취하고 마지막 문자를 가져 와서 확인하는 것입니다.

 

 

이것이 최선의 방법입니까 아니면 다른 방법이 있습니까?

답변

업데이트 (2015 년 11 월 24 일) :

이 답변은 원래 2010 년 (6 년 전)에 게시되었으므로 다음과 같은 통찰력있는 의견을 참고하십시오.

Google 직원을위한 업데이트-ECMA6이이 기능을 추가 한 것 같습니다. MDN 기사는 또한 polyfill을 보여줍니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith

최신 브라우저에서는 부분 문자열을 만드는 데 비용이 많이 들지 않습니다. 이 답변이 게시 된 2010 년이었을 것입니다. 요즘, 간단한 this.substr(-suffix.length) === suffix 파이어 폭스에 대한 접근 방식은 빠른 크롬에있다, 같이 IndexOf와 같은 IE11에서 동일하고, 4 % 느린 (fergetaboutit 지역) : jsperf.com/endswith-stackoverflow / 14 결과가 거짓이면 전반적으로 빠르게 : jsperf.com/endswith-stackoverflow-when-false 물론 ES6가 endsWith를 추가하면 요점은 논쟁의 여지가 있습니다. :-)


원래 답변 :

나는 이것이 오래된 질문이라는 것을 알고 있습니다 ...하지만 이것도 필요하고 브라우저 간 작업에 필요합니다. 그래서 ... 모든 사람의 대답과 의견을 결합 하고 약간 단순화합니다.

String.prototype.endsWith = function(suffix) {
    return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
  • 부분 문자열을 생성하지 않습니다
  • 가장 빠른 결과를 위해 기본 indexOf
  • 앞으로 건너 뛰려면 indexOf 의 두 번째 매개 변수를 사용하여 불필요한 비교를 건너 뜁니다.
  • Internet Explorer에서 작동
  • 정규식 합병증 없음

또한 기본 데이터 구조의 프로토 타입에 내용을 채우는 것을 좋아하지 않는 경우 독립 실행 형 버전이 있습니다.

function endsWith(str, suffix) {
    return str.indexOf(suffix, str.length - suffix.length) !== -1;
}

편집 : 주석에서 @hamish가 언급했듯이 안전한 측면에서 실수하고 구현이 이미 제공되었는지 확인하려면 다음과 같이 typeof

if (typeof String.prototype.endsWith !== 'function') {
    String.prototype.endsWith = function(suffix) {
        return this.indexOf(suffix, this.length - suffix.length) !== -1;
    };
}
출처 : https://stackoverflow.com/questions/280634/endswith-in-javascript
728x90
반응형