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에서 사용할 수 있습니다. 그 이유는 마지막 문자열만 스캔하는데, 슬라이스에 비해 장점은 문자열을 복사할 필요 없이 직접 스캔하기만 하면 되기 때문에 더 효율적이다.