programing

대체를 사용할 때 자바스크립트가 첫 번째 인스턴스만 대체하는 이유는 무엇입니까?

kingscode 2023. 8. 9. 22:11
반응형

대체를 사용할 때 자바스크립트가 첫 번째 인스턴스만 대체하는 이유는 무엇입니까?

나는 이것을 가지고 있다.

 var date = $('#Date').val();

이것은 텍스트 상자에서 이렇게 보이는 값을 가져옵니다.

12/31/2009

이제 내가 이걸 합니다.

var id = 'c_' + date.replace("/", '');

그리고 그 결과는

c_1231/2009

마지막 '/'가 그립습니다. 왜 그런지는 모르겠지만요.

글로벌하게 바꿀 g 플래그를 설정해야 합니다.

date.replace(new RegExp("/", "g"), '')
// or
date.replace(/\//g, '')

그렇지 않으면 첫 번째 항목만 바뀝니다.

C#/과는 다릅니다.NET 클래스 라이브러리(그리고 대부분의 다른 합리적인 언어), 당신이 합격할 때.String의 string-to-match 인수로서string.replace메소드, 그것은 문자열 교체를 하지 않습니다.문자열을 다음으로 변환합니다.RegExp정규식 대체를 수행합니다.검보가 설명하듯이, 정규식 대체는 다음을 필요로 합니다.g기본적으로 설정되어 있지 않은 글로벌 플래그로, 한 번에 모든 일치 항목을 바꿉니다.

예를 들어 match-string이 동적이고 regexen에 특별한 의미가 있는 문자를 포함할 수 있기 때문에 실제 문자열 기반 바꾸기를 원하는 경우 자바스크립트 관용구는 다음과 같습니다.

var id= 'c_'+date.split('/').join('');

사용할 수 있는 항목:

String.prototype.replaceAll = function(search, replace) {
if (replace === undefined) {
    return this.toString();
}
return this.split(search).join(replace);
}

언급URL : https://stackoverflow.com/questions/1967119/why-does-javascript-replace-only-first-instance-when-using-replace

반응형