>  기사  >  웹 프론트엔드  >  Javascript_javascript 팁에서 String.startsWith 및 endWith 메소드 구현

Javascript_javascript 팁에서 String.startsWith 및 endWith 메소드 구현

WBOY
WBOY원래의
2016-05-16 15:56:201550검색

String 유형에서 작업할 때 startWith(anotherString) 및 endWith(anotherString)는 매우 유용한 메서드입니다. 그 중 startWith는 현재 문자열이 anotherString으로 시작하는지 여부를 결정하고, endWith는 그것이 끝나는지 여부를 결정합니다. 예:

"abcd".startsWith("ab"); // true
"abcd".startsWith("bc"); // false
"abcd".endsWith("cd");  // true
"abcd".endsWith("e");  // false
"a".startsWith("a");   // true
"a".endsWith("a");    // true

안타깝게도 Javascript에는 이 두 가지 방법이 제공되지 않으므로 필요한 경우에만 직접 작성할 수 있습니다. 물론 글을 쓰는 것은 어렵지 않습니다.

if (typeof String.prototype.startsWith != 'function') {
 String.prototype.startsWith = function (prefix){
  return this.slice(0, prefix.length) === prefix;
 };
}

String.slice()는 둘 다 하위 문자열을 얻는다는 점에서 String.substring()과 유사하지만 일부 리뷰에서는 슬라이스가 더 효율적이라고 말합니다. 여기서 indexOf()를 사용하지 않는 이유는 indexOf가 전체 문자열을 검색하기 때문입니다. 문자열이 너무 길면 indexOf의 효율성이 매우 떨어집니다.

if (typeof String.prototype.endsWith != 'function') {
 String.prototype.endsWith = function(suffix) {
  return this.indexOf(suffix, this.length - suffix.length) !== -1;
 };
}

startsWith와 달리 indexOf는 endWith에서 사용할 수 있습니다. 그 이유는 마지막 문자열만 스캔하는데, 슬라이스에 비해 장점은 문자열을 복사할 필요 없이 직접 스캔하기만 하면 되기 때문에 더 효율적이다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.