> 웹 프론트엔드 > JS 튜토리얼 > 프로토타입 소스 코드에 대한 간략한 분석 문자열 부분 보충(4)_prototype

프로토타입 소스 코드에 대한 간략한 분석 문자열 부분 보충(4)_prototype

WBOY
풀어 주다: 2016-05-16 17:57:09
원래의
931명이 탐색했습니다.
替换 interpolate  | sub |  scan |  truncate | gsub
보간: 문자열을 템플릿으로 처리하고 개체의 속성으로 채웁니다.
sub: 패턴으로 지정된 패턴과 일치하는 문자열의 첫 번째 지정된 하위 문자열을 교체합니다.
scan: 매개변수 패턴으로 지정된 패턴과 일치하는 문자열의 모든 하위 문자열을 탐색합니다. 원래 문자열 자체를 반환합니다.
truncate: 문자열을 지정된 길이(접미사 부분 포함)로 자르고 접미사를 추가합니다.
gsub: 패턴으로 지정된 패턴과 일치하는 문자열의 모든 값을 교체로 교체

위 방법 중 가장 중요한 것은 gsub입니다. 자세한 지침은 "A Brief Analysis of"를 참조하세요. 프로토타입" 템플릿 클래스--템플릿》
sub는 횟수를 제한할 수 있다는 점을 제외하면 gsub와 완전히 동일합니다.
코드 복사 코드는 다음과 같습니다.

함수 하위(패턴, 교체, 개수) {
replacement = prepareReplacement(replacement);
count = Object.isUndefine(count) ? 1 : count
return this.gsub(pattern, function(match) {
if (--count < 0 ) return match[0];
replacement(match);
})
}

스캔은 동일합니다. 문자열 자체.
interpolate는 문자열을 템플릿으로 사용합니다.
truncate가 유일한 차이점입니다(지금은 잘못된 카테고리로 분류한 것 같습니다).
'fuck the gfw'라는 문자열을 예로 들면 'fuck the gfw'.truncate(10,'****')를 실행하기 위한 truncate 단계는 다음과 같습니다.
1. '** **'.length 문자 'fuck t'
2. 'fuck t****'를 얻으려면 접미사 '****'를 추가하세요. 길이는 10입니다.
처리가 매우 간단하고, 소스코드도 간단합니다.
코드 복사 코드는 다음과 같습니다.

function truncate(length, truncation) {
length = length || 30;//기본 길이 30
truncation = Object.isUndefine(truncation) ? '...' : truncation;//기본 접미사.. .
return this.length > length ?
this.slice(0, length - truncation.length) 잘림: 문자열(this)

또 다른: Prototype의 편리한 점 중 하나는 유용한 코드를 언제든지 별도의 섹션으로 추출하거나 자체 사용을 위해 수집할 수 있다는 것입니다. 아래에는 별도로 제안하는 템플릿 방식이 있습니다.


함수 템플릿(템플릿, 패턴){
this .template = template;
this.pattern = 패턴 || /(^|.|r|n)(#{(.*?)})/; = (함수 (){
함수 평가(obj){
return gsub.call(this,function(match){
if(obj == null){
return match[0] ' ';
}
var before = match[1] ||
if(before == '\'){
return match[2]
var ctx = obj;
var expr = match[3];
var 패턴 = /^([^.[] |[((?:.*?[^\])?)])(. |[| $)/;
match = 패턴.exec(expr);
if (match == null){
return before
}
while (match != null) {
var comp = match[1].search(/^[/) != -1 ? match[2].replace(/\\]/g, ']') : match[1]; >ctx = ctx[comp];
if (null == ctx || '' == match[3]) break;
expr = expr.substring('[' == match[3] ? match [1] .length : match[0].length);
match = Pattern.exec(expr);
}
return before (ctx === null ? '' : String(ctx)) ;
});
}
function gsub(replacement){
var 패턴 = this.pattern;
var result =
var match = null; var source = this.template;
if (!(pattern.length || Pattern.source)) {
replacement = replacement('')
return replacement source.split('').join (대체) 교체;
}
while (source.length > 0) {
if (match = source.match(pattern)) {
result = source.slice(0, match. index);
result = replacement(match) === null ? '' : String(replacement(match))
source.slice(match.index match[0].length); >}else {
result = source;
source = '';
}
return result;
}
return {
생성자:
evaluate : 평가
}
})() 코드는 다음과 같습니다.


var template = new Template('내 나이는 #{name.age}')
console.log(template.evaluate({name : {age) : 24}})) ;//내 나이 : 24


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