JavaScript 의 string 에 대한 replace

6693 단어
replace () 방법 은 문자열 에서 다른 문 자 를 일부 문자 로 바 꾸 거나 정규 표현 식 과 일치 하 는 하위 문자열 을 바 꾸 는 데 사 용 됩 니 다.
문법: string. replace (subStr / reg, replace Str / function)
첫 번 째 매개 변 수 는 문자열 의 하위 문자열 일 수도 있 고 정규 표현 식 일 수도 있 습 니 다. 두 번 째 매개 변 수 는 문자열 이나 처리 방법 일 수도 있 습 니 다. 다음은 각각 보 겠 습 니 다.
 
  
document.write('1234'.replace(1, 'X')); :X234, ,
 
  
document.write('1214'.replace(1, 'X')); :X2X4, :X214, , replace

우 리 는 정규 적 인 서법 으로 바 꾸 었 다.
 
  
document.write('1214'.replace(/1/g, 'X')); :X2X4

function 의 문법 을 봅 시다.
 
  
var r = 'abcd'.replace(/\w/g, function() {
            return 'X';
        });
        document.write(r);

이때 우 리 는 예상 결 과 를 볼 수 있다. XXXX, 모든 문자 가 X 로 바 뀌 었 다. 이것 은 내 가 이전에 replace 에 대한 인식 이지 만 나 는 JavaScript 언어 정수 에서 이런 예 를 보 았 다. 나 는 현혹 되 었 다.
 
  
var t = document.getElementById('t');
        String.prototype.deentityfy = function() {
            var entity = {
                quot: '"',
                lt: '                gt: '>'
            };
            return function() {
                return this.replace(/&([^&;]+);/g, function(a, b) {
                   var r = entity[b];
                    return typeof r === 'string' ? r : a;
                }); //end of replace
            };
        } ();

        document.write(''.deentityfy());


이 코드 는 JavaScript 의 String 대상 에 deentityfy 방법 을 추가 하여 문자열 의 HTML 문 자 를 바 꾸 는 것 입 니 다. ("바 꾸 기", 바 꾸 기 >)먼저, 우 리 는 작가 가 사용 하 는 언어 기 교 를 무시 하고 그의 replace 가 어떻게 사용 되 는 지 살 펴 보 겠 습 니 다. 첫 번 째 매개 변 수 는 정규 표현 식 입 니 다. 앞서 언급 한 세 개의 문자열 과 일치 합 니 다. 두 번 째 매개 변수의 function 에 두 개의 매개 변수 가 있 습 니 다. 이 두 매개 변 수 는 도대체 무엇 입 니까? 왜 방법 이 예상 한 결 과 를 얻 었 는 지 간단하게 분석 해 보 겠 습 니 다.
우선 entity [b] 는 JavaScript 관련 배열 의 용법 입 니 다. 배열 데이터 의 name 에 따라 value 를 얻 을 수 있 습 니 다. 이해 하기 편리 하도록 이 방법 을 바 꾸 어 간단하게 만 드 는 것 도 좋 습 니 다. function 의 매개 변수 가 무엇 인지 더욱 잘 볼 수 있 습 니 다. 또한 브 라 우 저 디 코딩 문 제 를 없 애기 위해 문자열 을 바 꾸 는 것 도 좋 습 니 다.
 
  
String.prototype.deentityfy = function() {
         var entity = {
             a: 'A',
             b: 'B',
             c: 'C'
         };
         return function() {
             return this.replace(/1([^12])2/g, function(a, b) {
                 for (var i = 0; i < arguments.length; i++) {
                     document.write(arguments[i] + '
');
                 }
                 document.write('===========================
');
                 var r = entity[b];
                 return typeof r === 'string' ? r : a;
             }); //end of replace
         };
     } ();
     document.write('1a21b21c2'.deentityfy());

이렇게 해서 우 리 는 방법의 매개 변 수 를 모두 인쇄 해서 결과 가 무엇 인지 보 자.
 
  
a2
a

a21b21c2
===========================
b2

 
a21b21c2
===========================
c2
c

a21b21c2
===========================
ABC

이상 하 죠? 마지막 은 방법의 결과 입 니 다. 정확 합 니 다. 예상 한 결 과 를 얻 었 습 니 다. function 의 매개 변수 부분 을 보 여 주세요.
function 은 세 번 호출 되 었 습 니 다. 마침 일치 하 는 횟수 입 니 다. 매번 일치 하 는 문자열 을 바 꿉 니 다.
매번 호출 할 때마다 방법 은 네 개의 매개 변수 가 있다.
첫 번 째 매개 변 수 는 간단 합 니 다. 일치 하 는 문자열 입 니 다.
두 번 째 는 이상 하지만 한 번 씩 보면 얻 기 어렵 지 않 습 니 다. 두 번 째 매개 변 수 는 정규 표현 식 괄호 안에 있 는 일치 하 는 내용 입 니 다.
세 번 째 매개 변 수 는 문자열 에 일치 하 는 index 입 니 다.
네 번 째 매개 변 수 는 원래 문자열 입 니 다.
신기 하 죠? 그런데 그 렇 죠? 다시 써 보 겠 습 니 다.
 
  
var r = '1a21b21c2'.replace(/1\w2/g, function() {
            for (var i = 0; i < arguments.length; i++) {
                document.write(arguments[i] + '
');
            }
            document.write('===========================
')
            return 'X';
        });
        document.write(r);

앞의 예 와 비슷 합 니 다. 모든 일치 하 는 항목 을 X 로 간단하게 바 꾸 고 결 과 를 보 세 요.
 
  
a2

a21b21c2
===========================
b2

a21b21c2
===========================
c2

a21b21c2
===========================
XXX


의외로 맞 는 지, 결 과 는 예 상 했 지만 매개 변수 가 하나 줄 었 습 니 다. 두 번 째 매개 변 수 는 보이 지 않 습 니 다. 도대체 어떤 차이 가 있 는 지 보 세 요. 정규 표현 식 에서 불필요 한 괄호 가 없어 진 것 같 습 니 다. 지난 예 에서 두 번 째 매개 변 수 는 괄호 안의 일치 항목 입 니 다. 두 번 째 매개 변 수 는 정규 표현 식 에서 괄호 안의 일치 항목 입 니까? 우 리 는 괄호 를 추가 합 니 다.돌아 와 서 검증 해 봐.
 
  
var r = '1a21b21c2'.replace(/1(\w2)/g, function() {
            for (var i = 0; i < arguments.length; i++) {
                document.write(arguments[i] + '
');
            }
            document.write('===========================
')
            return 'X';
        });
        document.write(r);

결 과 를 보다
 
  
a2
a2

a21b21c2
===========================
b2
b2

a21b21c2
===========================
c2
c2

a21b21c2
===========================
XXX


아니 나 다 를 까, 이렇게 해서 우 리 는 function 에 도대체 어떤 매개 변수 가 있 는 지 알 게 되 었 습 니 다. 자 바스 크 립 트 언어의 정수 가 무 거 운 예 를 보면 알 게 되 었 습 니 다. 물론 우 리 는 관련 배열 을 알 아야 합 니 다. 즉시 함수, 폐쇄 와 arguments 대상 을 실행 해 야 합 니 다. 만약 에 한 마디 에 있 는 모든 단어의 이니셜 을 대문자 로 쓰 면 그 럴 수 있 습 니까?
 
  
// ,
 var sentence = 'i love you';
        var upper = sentence.replace(/(\w)\w*\b/g, function(a,b) {
            return b.toUpperCase()+a.substring(1);
        });
        document.write(upper);
 
  
//
  var sentence = 'i love you';
        var upper = sentence.replace(/\w+\b/g, function(a) {
            return a.substr(0,1).toUpperCase()+a.substring(1);
        });
        document.write(upper);

좋은 웹페이지 즐겨찾기