> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 함수 대체의 비밀

JavaScript 함수 대체의 비밀

高洛峰
풀어 주다: 2016-11-28 15:58:43
원래의
1196명이 탐색했습니다.

JavaScript의 바꾸기 함수는 문자열 교체 함수로 사용됩니다. 이는 강력한 문자열 연산 함수이며 일반적인 문자열 연산에 권장되는 사용법입니다. 이 에세이는 당신에게 그것에 대한 더 깊은 이해를 제공할 것입니다.
바꾸기 함수는 두 개의 매개변수를 허용합니다. 첫 번째 매개변수는 문자열 또는 정규식입니다. 첫 번째 매개변수는 문자열이나 함수도 허용합니다.
우선, 첫 번째 매개변수가 문자열인 경우 더 이상 "I am a boy"라고 말할 필요가 없습니다.replace("boy","girl") 출력은 "I am a girl"입니다. . 여기서 제가 이야기하고 싶은 것은 첫 번째 매개변수가 정규인 경우입니다. 정규식의 경우 전역(global//g)인지 여부에 따라 교체 동작이 먼저 결정됩니다. 모두이면 모두 교체되며, 비전역이면 첫 번째로 일치하는 문자열만 교체됩니다. 예:


"Ha Ha".replace(/bw+b/g, "He") // He He

"Ha Ha".replace(/bw+b/, "He") //He Ha

1: 두 번째 매개변수는 문자열입니다:
정기적인 교체를 위해 특수 마커가 합의됩니다. $:
1. $i (i:1-99): 왼쪽에서 오른쪽으로 정규 하위 표현식과 일치하는 텍스트를 나타냅니다.
2.        $&: 정규식과 일치하는 전체 텍스트를 나타냅니다.
3.        $`(`:스위치 스킬 키): 일치하는 문자열의 왼쪽에 있는 텍스트를 나타냅니다.
4.         $'(': 작은따옴표): 일치하는 문자열의 올바른 텍스트를 나타냅니다.
5. $$: $ 전송을 의미합니다.
몇 가지 데모는 다음과 같습니다.

"boy & girl".replace(/(w+)s*&s*(w+)/g,"$2 & $1") / / 소녀와 소년

"boy".replace(/w+/g,"$&-$&") // 소년-소년

"javascript".replace(/script/,"$& != $`") //javascript != java

"javascript".replace(/java/," $ &$' is ") // javascript is script

2: 두 번째 매개변수는 함수입니다:
JavaScript1.2에서 구현된 ECMAScript3의 function 메소드를 사용하는 것이 좋습니다. 교체 메소드가 실행될 때마다 이 함수가 매번 호출되며, 반환된 값은 교체를 위한 새로운 값으로 사용됩니다.
함수 매개변수 사양:
1. 첫 번째 매개변수는 각 일치 항목의 전체 텍스트($&)입니다.
2. 중간 매개변수는 하위 표현식 일치 문자열이며, 개수는 제한되지 않습니다. ($i (i:1-99))
3. 두 번째 매개변수는 일치하는 텍스트 문자열 위치의 일치하는 첨자입니다.
4. 마지막 매개변수는 문자열 자체를 나타냅니다.
이 글은 대체의 힘에 대해 말하려는 내용입니다. 이론적인 내용은 모두 무미건조한 내용입니다. 모든 빈 문제를 해결하려면 예가 필요합니다.
1: 문자열의 첫 글자를 대문자로 사용하세요.

String.prototype.capitalize = function(){ 
 
    return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); 
 
    } ); 
 
};
로그인 후 복사

,

console.log("i am a boy !".capitalize())

출력: I Am A Boy !
2: 쌍 문자열 "장삼 56점, 이시 74점, 왕우 92점, 조류 84점"의 점수를 추출하여 요약하고, 평균점수를 계산하여 개인별 평균점수 차이를 출력한다. .

var s = "장산 56점, 이시 74점, 왕우 92점, 조류 84점"

var a = s.match(/\d+/g); 
 
var sum = 0; 
 
for(var i = 0 ; i < a.length; i++){ 
 
            sum += parseFloat(a[i]); 
 
} 
 
  
 
var avg = sum / a.length; 
 
  
 
function f(){ 
 
            var n = parseFloat(arguments[1]); 
 
            return n + "分" + "(" + ((n > avg) ? ("超出平均分" + (n - avg)) : 
 
                        ("低于平均分" + (avg - n))) + "分)"; 
 
} 
 
  
 
var result = s.replace(/(\d+)分/g, f); 
 
console.log(result);
로그인 후 복사

출력:
Zhang San 56점(평균보다 20.5점 낮음), Li Si 74점(평균보다 2.5점 낮음), Wang Wu 92점(평균보다 15.5점 낮음), Zhao Liu는 84점을 획득했습니다(평균 점수를 7.5점 초과)

JavaScript의 대체가 추가되면 규칙성의 고급 응용 프로그램 주장에 대해서는 다루지 않습니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿