2009-07-07 3 views

답변

149

이 같은 regexps '에 사용할 수 :

문자열이 ($)의 끝에서'가치 '가있는 경우에 true를 반환
str.match(/value$/) 

.

+1

테스트 실패 : 값 = "테스트 [a - z]".그렇지 않으면 : 'test [az]'일치 (/ [az] $ /)는 "null"을 리턴합니다 – gmunkhbaatarmn

+0

일반적으로 정규식 도구를 내 가방에서 먼저 꺼내지는 않지만 모든 대안보다 우수합니다 (String # endsWith is firefox에서만 기본적으로 지원되며 제 3 자 js를 확장/사용하는 것은 다소 과도합니다.) – diclophis

+1

match()는 부울을 반환하지 않습니다. 'foobar'. match (/ bar $ /)는 [ "bar"]를 반환합니다. –

37

도난 :

String.prototype.endsWith = function(pattern) { 
    var d = this.length - pattern.length; 
    return d >= 0 && this.lastIndexOf(pattern) === d; 
}; 

'slaughter'.endsWith('laughter'); 
// -> true 
+5

일부 사람들은 핵심 클래스의 프로토 타입을 수정하면 안되는 일이라고 생각합니다. Crockford는 그의 저서 JavaScript : The Good Parts에서 "global abatement"라고 언급합니다. –

+4

왜 안되니? 아니면 크로포드가 말했기 때문에 그렇게하지 않습니까? –

+9

JS의 모든 구현에서 작동하지 않을 수도 있으므로 ECMAScript Compact Profile 사양 (ECMA-327 : http://www.ecma-international.org/publications/standards/Ecma-327 .htm)은 "Compact"구현 (예 : 휴대폰과 같은 핸드 헬드 장치)이이를 지원할 필요가 없음을 지정합니다 (5.2 절 참조). 비록 당신이 그것에 귀찮아하지 않더라도, 새로운 버전의 JS를 깨뜨릴 가능성이 있습니다 : 예를 들어, "forEach"메소드를 Array.prototype에 추가 한 코드를 배포 한 사람은 이제 네이티브 구현을 깨고 있습니다 최신 버전의 Firefox에서. – NickFitz

9

정규 표현식

"Hello world".match(/world$/) 
0

당신은 항상 String 클래스의 프로토 타입을 수 있습니다,이 작동합니다

String.prototype.endsWith = 기능 (STR) {반환 (this.match (STR + "$" 당신은 그냥 무엇을 확장하고 http://www.tek-tips.com/faqs.cfm?fid=6620

+2

다음과 같은 경우 실패합니다. str은 "[ssss]"와 같은 특별한 regexp 문자를 포함합니다. – studgeek

1

에서 String 클래스에 대한 기타 관련 확장을 찾을 수 있습니다

) == STR)} @ luca-matteis가 게시했지만 주석에 지적 된 문제를 해결하기 위해 코드를 래핑하여 네이티브 구현을 덮어 쓰지 않도록해야합니다.

if (!String.prototype.endsWith) { 
    String.prototype.endsWith = function(pattern) { 
     var d = this.length - pattern.length; 
     return d >= 0 && this.lastIndexOf(pattern) === d; 
    }; 
} 

는 Array.prototype.forEach 방법에 대한 제안 된 방법은 내가 경기 방식으로 운이 없었다 the mozilla developer network

4

에서 지적되고이 있지만, 이것은 일 :

당신이 문자열이있는 경우 , "이것은 내 끈이야." 그것은 마침표로 끝나는 경우보고 싶어,이 작업을 수행 :

var myString = "This is my string."; 
var stringCheck = "."; 
var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0; 
alert(foundIt); 

당신은 변수 stringCheck을 확인하기 위해 임의의 문자열로 변경할 수 있습니다. 더 나은 여전히 ​​다음과 같이 자신의 기능이 던져하는 것입니다 :

function DoesStringEndWith(myString, stringCheck) 
{ 
    var foundIt = (myString.lastIndexOf(stringCheck) === myString.length - stringCheck.length) > 0; 
    return foundIt; 
} 
+1

정말 좋은, @ theJerm. 이것은 .match가 항상 그런 것은 아니지만 다양한 상황에서 저에게 효과적이었습니다. – Nathan

1

ES6이 직접 지원

'this is dog'.endsWith('dog') //true 
+0

아무도 IE11 이하를 사용하지 않으면 유용합니다. – AntonChanning

+0

그래,하지만 그게 당신에게 바벨이있어. –

1

당신은 'hello world'.slice(-5)==='world' 할 수 있습니다. 모든 브라우저에서 작동합니다. 정규식보다 훨씬 빠릅니다.

관련 문제