Angenommen, Sie haben eine Zeichenfolge: "Die ABC-Kuh sprang über XYZ den Mond" und Sie möchten mit jQuery die Teilzeichenfolge zwischen "ABC" und "XYZ" abrufen ? Der Teilstring sollte "Kuh übersprungen" sein. Danke vielmals!Verwenden von jQuery zum Suchen einer Teilzeichenfolge
Antwort
Dies hat nichts mit jQuery zu tun, das hauptsächlich für DOM-Traversal und -Manipulation gedacht ist. Sie wollen einen einfachen regulären Ausdruck:
var str = "The ABC cow jumped over XYZ the moon";
var sub = str.replace(/^.*ABC(.*)XYZ.*$/m, '$1');
Die Idee ist, dass Sie ein String.replace mit einem regulären Ausdruck verwenden, die Ihre Öffnen und Schließen Trennzeichen übereinstimmt und mit dem Teil zwischen den Trennzeichen abgestimmt die gesamte Zeichenfolge zu ersetzen.
Das erste Argument ist ein regulärer Ausdruck. Die nachgestellte m
bewirkt, dass es über mehrere Zeilen übereinstimmt, was bedeutet, dass Ihr Text zwischen ABC
und XYZ
Zeilenumbrüche enthalten kann. Der Rest setzt sich wie folgt zusammen:
^
Start am Anfang des Strings.*
eine Reihe von 0 oder mehr ZeichenABC
Ihre Eröffnungszeichen(.*)
Spiel eine Reihe von 0 oder mehr ZeichenXYZ
Ihr schließendes Trennzeichen.*
eine Reihe von 0 oder mehr Zeichen$
Spiel bis zum Ende des Strings
Der zweite Parameter, die Ersatzzeichenfolge ist '$ 1'. replace
ersetzt in eckigen Klammern submatchs von Ihrem regulären Ausdruck - der (.*)
Teil von oben. Somit ist der Rückgabewert die gesamte Zeichenfolge, die durch die Teile zwischen den Begrenzern ersetzt wird.
Ich dachte, jQuery hat Funktionen: substring und indexof, und diese können möglicherweise zusammen verwendet werden, um die Teilzeichenfolge zu erhalten. – Steve
Können Sie kurz erklären, wie das funktioniert: str.replace (/^.* ABC (. *) XYZ. * $ /, '$ 1'); – Steve
@Steve - Es ist JavaScript, das Funktionen wie substring und indexof hat. jQuery befasst sich hauptsächlich mit dem DOM einer Seite. –
Möglicherweise müssen Sie jQuery nicht verwenden. Ich würde so etwas tun:
function between(str, left, right) {
if(!str || !left || !right) return null;
var left_loc = str.indexOf(left);
var right_loc = str.indexOf(right);
if(left_loc == -1 || right_loc == -1) return null;
return str.substring(left_loc + left.length, right_loc);
}
Keine garantiert der obige Code ist fehlerfrei, aber die Idee ist es, die Standard substring() Funktion zu verwenden. Nach meiner Erfahrung funktionieren diese Arten von Funktionen in allen Browsern gleich.
Nur um Ihnen zu zeigen, wie Sie jQuery und meagars Regex verwenden würden. Lassen Sie uns sagen, dass Sie eine HTML-Seite mit dem folgenden P
Tag haben:
<p id="grabthis">The ABC cow jumped over XYZ the moon</p>
die Zeichenfolge zu packen, würden Sie den folgenden jQuery/JavaScript-Mix verwenden (klingt irgendwie dumm, da jQuery JavaScript, aber sehen jQuery als JavaScript-DOM-Bibliothek):
$(document).ready(function() { // Wait until the document has been fully loaded
var pStr=$("#grabthis").text(); // Grab the text from the P tag and put it into a JS variable
var subStr=pStr.replace(/^.*ABC(.*)XYZ.*$/m, '$1'); // Run the regex to grab the middle string
alert(subStr); // Output the grabbed middle string
});
oder die kürzere Version:
$(document).ready(function() {
alert($("#grabthis").text().replace(/^.*ABC(.*)XYZ.*$/m, '$1'));
});
die ersetzen-Funktion eine JavaScript-Funktion ist. Ich hoffe, das löscht die Verwirrung.
Meagar, Ihre Erklärung ist großartig und erklärt klar, wer es funktioniert.
Nur ein paar kleine Fragen:
Sind die() Klammer nur erforderlich, als eine Möglichkeit, einen submatch im zweiten Parameter der relpace Funktion, um anzuzeigen, oder würde dies erkennen auch die submatches:/^. *ABC. XYZ. $/aber funktioniert nicht für das, was wir in diesem Fall versuchen?
Enthält diese regulären Ausdruck haben 7 submatches:...
^
*
ABC
*
XYZ
*
$
- Ist die $ 1 bedeutet, die fi zu verwenden erstes geklammertes Submatch? Zuerst dachte ich, es könnte bedeuten, das zweite Submatch in der Serie zu verwenden (das erste ist $ 0).
Danke,
Steve
- 1. Verwenden von jQuery zum Suchen einer Klasse nach ID-Name
- 2. Suchen einer Teilzeichenfolge in einem NSString-Objekt
- 3. Verwenden GNU libc regexec() zum zählen Teilzeichenfolge
- 4. Verwenden von Joins zum Suchen von Benutzern
- 5. Verwenden von VBA zum Suchen nach einer Zeichenfolge in Excel
- 6. Verwenden von Apache Lucene zum Suchen
- 7. Verwenden von Cookies mit Python zum Speichern von Suchen
- 8. Java-Funktion zum Suchen der längsten duplizierten Teilzeichenfolge in einer Zeichenfolge benötigt?
- 9. Verwenden von jQuery zum Abrufen von Text aus einer bestimmten
- 10. Verwenden von jQuery zum "Live-Suchen" (Filtern) von Elementen in einem HTML-Code
- 11. jQuery-Funktion zum Suchen und Ersetzen
- 12. Verwenden von Regex zum Suchen von Daten in Python
- 13. Verwenden von PrincipalSearcher zum Suchen von Benutzern mit "oder" -Parametern
- 14. Verwenden von LINQ zum Suchen/Löschen von Duplikaten
- 15. Verwenden von jQuery-Selektoren zum Rendern reactjs
- 16. Verwenden von jquery/ajax/webmethod zum Aktualisieren einer Listbox
- 17. Verwenden von jquery ajax zum Herunterladen einer Binärdatei
- 18. Regulärer Ausdruck zum Ausschließen der Teilzeichenfolge
- 19. Teilzeichenfolge auf einem Nicht-Objekt in jQuery
- 20. Verwenden von Lucene zum Suchen nach E-Mail-Adressen
- 21. Verwenden von Regex zum Erfassen von Teilzeichenfolge nach einem Wort und vor einem anderen nicht funktioniert
- 22. Verwenden einer Hashtabelle zum Speichern von Schlüsseln?
- 23. Verwenden von Scrapy zum Suchen und Herunterladen von PDF-Dateien von einer Website
- 24. Powershell Teilzeichenfolge der Teilzeichenfolge
- 25. Verwenden einer Variablen in jQuery zum Ausführen einer Funktion
- 26. Verwenden Sie jQuery zum Navigieren von Seite
- 27. Verwenden von jQuery zum Aufrufen eines Webdiensts
- 28. Verwenden von JQuery zum Wechseln zwischen Symbolklassen
- 29. Verwenden von JQuery zum Aufrufen eines WebMethods
- 30. Verwenden von dig zum Suchen nach SPF-Datensätzen
Zunächst einmal setzen Sie ein jQuery nicht String-Manipulation zu tun -, dass Javascript/ECMAScript ist. Zweitens, können Sie genauer über die Logik sein, die verwendet wird, um diese Zeichenfolge zu erfassen? Gibt es ein Muster? –
Frage zu jQuery nicht mit jQuery getaggt –
Nun, warum brauchen Sie jQuery? kann nicht einfach Javascript für Sie arbeiten –