Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Diskussion über die Methode replace() in jQuery_jquery

Eine kurze Diskussion über die Methode replace() in jQuery_jquery

WBOY
WBOYOriginal
2016-05-16 15:59:192067Durchsuche

Als ich heute den Jquery-Quellcode las, entdeckte ich ein Problem, das mir noch nie zuvor aufgefallen war, nämlich das Problem, wenn der zweite Parameter von replace() eine Funktion ist, von der ich früher wusste, dass der zweite Parameter von replace ist () kann eine Funktion sein, aber ich weiß nicht, wie ich sie bedienen soll. Als ich heute im Quellcode eine Funktion sah, die als zweiter Parameter von replace() verwendet wurde, hatte ich das Gefühl, dass sie schwer zu lesen war, also habe ich geplant um diese Funktion zu klären...

Grammatik

stringObject.replace(regexp/substr, replacement)

Rückgabewert

Gibt eine neue Zeichenfolge zurück, die durch Ersetzen des ersten Treffers oder eines beliebigen regulären Ausdrucks durch Ersatz

erhalten wird

Wenn die Parameterersetzung der Methode replace() eine Funktion ist, wird in diesem Fall die Funktion für jede Übereinstimmung aufgerufen und die von der Funktion zurückgegebene Zeichenfolge wird als Ersetzungstext verwendet. Der erste Parameter dieser Funktion ist eine Zeichenfolge, die dem Muster entspricht. Der nächste Parameter ist eine Zeichenfolge, die dem Unterausdruck im Muster entspricht. Es können 0 oder mehr solcher Parameter vorhanden sein. Der nächste Parameter ist eine Ganzzahl, die die Position in stringObject angibt, an der die Übereinstimmung auftritt. Der letzte Parameter ist das stringObject selbst. Dieser Satz wurde von w3cschool kopiert. Ich verstehe den obigen Absatz nicht ganz und kann ihn nicht einfach in meinen eigenen Worten beschreiben, daher kann ich nur Beispiele verwenden, um alles zu veranschaulichen

Code kopieren Der Code lautet wie folgt:

var string = "abc123-ii";
string.replace(/(d)-([da-z])/g,function( str1, str2, str3, str4, str5){
           console.log( str1 ); // 3-i
            console.log( str2 ); // 3 (erste Aufnahme)
            console.log(str3);//i (die zweite nicht erfassende Gruppe)
console.log(str4);//5 (entspricht der Position, die in der Zeichenfolge erscheint)
            console.log(str5);// abc123-ii (String selbst)
          return „I“;
})

Das Obige ist der JQuery-Quellcode, den ich mir heute angesehen habe

Code kopieren Der Code lautet wie folgt:

camelCase: function( string ) {
           return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},
fcamelCase = function( all, letter ) {
         return letter.toUpperCase();
};

Ich habe das Gefühl, dass ich diese Funktion jetzt verstehe, obwohl ich sie damals nicht verstanden habe

Dann erinnere ich mich jetzt daran, dass ich nicht weiß, wann ich in der Vergangenheit bei der Verwendung von replace() auf seltsame Symbole gestoßen bin, die für mich damals seltsam waren, wie zum Beispiel „$1, $2“ und so weiter. Jetzt hat Ye Lai eine Antwort auf diese Frage

$1, $2, $3.... bedeutet die Erfassung von 1, 2, 3...

Code kopieren Der Code lautet wie folgt:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$1")); // Capture-Gruppe 1(3) verwenden, um /(d)-([da-z ])/g

$& stellt einen Teilstring dar, der zum regulären Ausdruck passt

Code kopieren Der Code lautet wie folgt:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$&")); // Ersetze /(d durch die Zeichenfolge (3-i), die mit regexp übereinstimmt)-( [da-z])/g

$` stellt den Text dar, der sich links von der passenden Teilzeichenfolge befindet

Code kopieren Der Code lautet wie folgt:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$`")); // Ersetze /(d)- durch den Text auf der linken Seite der passenden Zeichenfolge ( abc12) ([da-z])/g

$' stellt den Text dar, der sich auf der rechten Seite der übereinstimmenden Teilzeichenfolge befindet

Code kopieren Der Code lautet wie folgt:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$'")); // Ersetze /(d)-([ durch den Text auf der rechten Seite des Treffers string da-z])/g

$$ ist direkt das $-Symbol

Code kopieren Der Code lautet wie folgt:

var string = "abc123-ii";
console.log(string.replace(/(d)-([da-z])/g, "$$")); // Verwenden Sie das $-Symbol, um /(d)-([da-z])/ zu ersetzen g

Oben ist mir die Verwendung der Methode „replace()“ nicht klar. Ich bin ein Front-End-Neuling, ob in dem, was ich geschrieben habe, etwas nicht stimmt oder ob es Beispiele für eine bessere Verwendung dieser Methode gibt , ich hoffe du kannst es teilen...

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn