Ich versuche, eine Zeichenfolge aus einer größeren Zeichenfolge zu extrahieren, in der alles zwischen einem ':' und einem ';' angezeigt wird.
Aktuell
Str = 'MyLongString:StringIWant;'
Gewünschte Ausgabe
newStr = 'StringIWant'
javascript
regex
string
substring
rauben
quelle
quelle
Sie können dies auch versuchen:
quelle
str.split(':').pop().split(';')[0]
kann schneller sein als mit.shift()
Verwenden
split()
arrStr
enthält alle Zeichenfolgen, die durch:
oder begrenzt sind. Greifen Sie;
also auf jede Zeichenfolge zu
for-loop
quelle
\[(.*?)\]
---> Kurz gesagt, Sie müssen eckige Klammern entfernen , da [] die Zeichenklasse im regulären Ausdruck bezeichnet.@Babasaheb Gosavi Die Antwort ist perfekt, wenn die Teilzeichenfolgen einmal vorkommen (":" und ";"). Sobald Sie jedoch mehrere Vorkommen haben, kann es etwas schwierig werden.
Die beste Lösung, die ich für die Arbeit an mehreren Projekten gefunden habe, ist die Verwendung von vier Methoden innerhalb eines Objekts.
Code
Also genug reden, sehen wir uns den Code an:
Wie benutzt man?
Beispiel:
quelle
RangeError: Maximum call stack size exceeded
Ausnahme bekommen.quelle
Ich mag diese Methode:
quelle
Ich habe @tsds verwendet, aber nur mit der Split-Funktion.
Achtung: Wenn in der Zeichenfolge kein ":" enthalten ist, wird beim Zugriff auf den '1'-Index des Arrays ein Fehler ausgegeben! str.split (':') [1]
Daher ist @tsds Weg sicherer, wenn Unsicherheit besteht
quelle
Sie können eine Funktion höherer Ordnung verwenden, um eine 'kompilierte' Version Ihres Extraktors zurückzugeben. Auf diese Weise ist sie schneller.
Mit regulären Ausdrücken und dem einmaligen Kompilieren des regulären Ausdrucks in einem Abschluss gibt die Übereinstimmung von Javascript alle Übereinstimmungen zurück.
Dadurch müssen wir nur noch das entfernen, was wir als Marker verwendet haben (dh :),
{{
und wir können dafür die Stringlänge mit Slice verwenden.Einmal kompilieren und mehrmals verwenden ...
Oder einmalige Verwendung ...
Schauen Sie sich auch die
replace
Funktion von Javascript an , aber verwenden Sie eine Funktion für das Ersetzungsargument (Sie würden dies tun, wenn Sie beispielsweise eine Mini-Template-Engine (String-Interpolation) ausführen ... lodash.get könnte dann auch hilfreich sein, um die gewünschten Werte zu erhalten ersetzen mit ? ...Meine Antwort ist zu lang, aber es könnte jemandem helfen!
quelle
quelle
Sie können auch dieses verwenden ...
quelle
Zeichenfolge zwischen Teilzeichenfolgen abrufen (enthält mehr als 1 Zeichen)
Hinweis Ich verwende
indexOf()
stattdessenlastIndexOf()
, damit das erste Auftreten dieser Zeichenfolgen überprüft wirdquelle
strlength1
Variablen? Der Wert sollte stattdessen inline verwendet werden. Es ist auch nicht klar, welchen Fallstil Sie verwenden.strlength1
- kein Stil,whole_str
- Schlangenetui.Versuchen Sie dies, um mithilfe von Javascript eine Teilzeichenfolge zwischen zwei Zeichen abzurufen.
Entnommen aus @ Find Teilzeichenfolge zwischen den beiden Zeichen mit jQuery
quelle
Verwenden von jQuery :
Zeichenfolge
Verwendung :
Ergebnis :
quelle
Eine kleine Funktion, die ich erstellt habe, um die Zeichenfolge zwischen zu erfassen und (optional) eine Anzahl übereinstimmender Wörter zu überspringen, um einen bestimmten Index abzurufen.
Bei Einstellung
start
auffalse
wird außerdem der Anfang der Zeichenfolge und bei Einstellungend
auffalse
das Ende der Zeichenfolge verwendet.Wenn Sie
pos1
die Position des zu verwendendenstart
Textes festlegen ,1
wird das erste Vorkommen von verwendetstart
pos2
macht das Gleiche wiepos1
, aber fürend
und1
wird das erste Auftreten vonend
nur nach verwendenstart
, Vorkommen vonend
vorstart
werden ignoriert.quelle
Dies könnte die mögliche Lösung sein
quelle