반응형
replace를 사용할 때 Javascript가 첫 번째 인스턴스 만 대체하는 이유는 무엇입니까?
나는 이것을 가지고있다
var date = $('#Date').val();
이것은 텍스트 상자에 다음과 같은 값을 얻습니다.
2009 년 12 월 31 일
이제 나는 이것에
var id = 'c_' + date.replace("/", '');
결과는
c_1231 / 2009
나는 왜 그런지 이해하지 못하는 마지막 '/'를 그리워합니다.
전역 적으로 바꾸 려면 g 플래그 를 설정해야합니다 .
date.replace(new RegExp("/", "g"), '')
// or
date.replace(/\//g, '')
그렇지 않으면 첫 번째 항목 만 교체됩니다.
C # /. NET 클래스 라이브러리 (및 대부분의 다른 합리적인 언어)와 달리, String
문자열 대 일치 인수를 string.replace
메소드에 전달할 때는 문자열 대체를 수행하지 않습니다. 문자열을 a로 변환하고 RegExp
정규식 대체를 수행합니다. Gumbo가 설명 하듯이 정규식 대체에는 g
모든 일치 항목을 한 번에 바꾸려면 기본적으로 켜져 있지 않은 slobal 플래그 가 필요합니다 .
예를 들어 match-string이 동적이고 regexen에서 특별한 의미를 가진 문자를 포함 할 수 있기 때문에 실제 문자열 기반 바꾸기를 원하는 경우 JavaScript 관용구는 다음과 같습니다.
var id= 'c_'+date.split('/').join('');
당신이 사용할 수있는:
String.prototype.replaceAll = function(search, replace) {
if (replace === undefined) {
return this.toString();
}
return this.split(search).join(replace);
}
반응형
'IT박스' 카테고리의 다른 글
Android Studio에서 콘솔로 인쇄하는 방법은 무엇입니까? (0) | 2020.06.28 |
---|---|
node.js TypeError : 경로는 절대적이거나 res.sendFile에 루트를 지정해야합니다 [JSON 구문 분석에 실패했습니다] (0) | 2020.06.28 |
PHP_excel의 대안 (0) | 2020.06.28 |
한 데이터베이스에서 다른 데이터베이스로 테이블을 복사하는 가장 쉬운 방법은 무엇입니까? (0) | 2020.06.28 |
Java에서 두 배로 정밀도 유지 (0) | 2020.06.28 |