J'essaie d'extraire une chaîne à partir d'une chaîne plus grande où il obtient tout entre un ':' et un ';'.
Actuel
Str = 'MyLongString:StringIWant;'
Sortie désirée
newStr = 'StringIWant'
J'essaie d'extraire une chaîne à partir d'une chaîne plus grande où il obtient tout entre un ':' et un ';'.
Actuel
Str = 'MyLongString:StringIWant;'
Sortie désirée
newStr = 'StringIWant'
Tu peux essayer ça
var mySubString = str.substring(
str.lastIndexOf(":") + 1,
str.lastIndexOf(";")
);
Vous pouvez également essayer ceci:
la source
str.split(':').pop().split(';')[0]
peut être plus rapide que d'utiliser.shift()
Utilisation
split()
arrStr
contiendra toute la chaîne délimitée par:
ou;
Alors accédez à chaque chaîne via
for-loop
la source
\[(.*?)\]
---> En bref, vous devez échapper les crochets, car [] désigne la classe de caractères dans l'expression régulière.@Babasaheb Gosavi Answer est parfait si vous avez une occurrence des sous-chaînes (":" et ";"). mais une fois que vous avez plusieurs occurrences, cela peut devenir un peu délicat.
La meilleure solution que j'ai trouvée pour travailler sur plusieurs projets consiste à utiliser quatre méthodes à l'intérieur d'un objet.
Code
Alors assez parlé, voyons le code:
Comment utiliser?
Exemple:
la source
RangeError: Maximum call stack size exceeded
exception.la source
J'aime cette méthode:
la source
J'ai utilisé @tsds façon mais en utilisant uniquement la fonction de fractionnement.
avertissement: s'il n'y a pas de ":" dans la chaîne, l'accès à l'index '1' du tableau générera une erreur! str.split (':') [1]
donc @tsds way est plus sûr s'il y a incertitude
la source
la source
Vous pouvez utiliser une fonction d'ordre supérieur pour renvoyer une version «compilée» de votre extracteur, de cette façon c'est plus rapide.
Avec les expressions régulières, et en compilant l'expression régulière une fois dans une fermeture, la correspondance de Javascript renverra toutes les correspondances.
Cela ne nous laisse plus qu'à supprimer ce que nous avons utilisé comme marqueurs (c'est-à-dire:)
{{
et nous pouvons utiliser la longueur de chaîne pour cela avec slice.Compilez une fois et utilisez plusieurs fois ...
Ou à usage unique ...
Regardez également la
replace
fonction de Javascript mais en utilisant une fonction pour l'argument de remplacement (vous le feriez si, par exemple, vous faisiez un mini moteur de modèle (interpolation de chaîne) ... lodash.get pourrait également être utile pour obtenir les valeurs que vous souhaitez remplacer par ? ...Ma réponse est trop longue mais cela pourrait aider quelqu'un!
la source
Vous pouvez également utiliser celui-ci ...
la source
Récupère une chaîne entre deux sous-chaînes (contient plus d'un caractère)
Notez que j'utilise à la
indexOf()
place delastIndexOf()
donc il vérifiera les premières occurrences de ces chaînesla source
strlength1
variable? La valeur doit être utilisée en ligne à la place. De plus, le style de boîtier que vous utilisez n'est pas clair .strlength1
- pas de style,whole_str
- étui serpent.Essayez ceci pour obtenir une sous-chaîne entre deux caractères en utilisant javascript.
Tiré de @ Find sous-chaîne entre les deux caractères avec jQuery
la source
Utilisation de jQuery :
chaîne
utilisation :
résultat :
la source
Une petite fonction que j'ai créée qui peut saisir la chaîne entre et peut (éventuellement) sauter un certain nombre de mots correspondants pour saisir un index spécifique.
En outre, définir
start
surfalse
utilisera le début de la chaîne et définirend
surfalse
utilisera la fin de la chaîne.défini
pos1
sur la position dustart
texte que vous souhaitez utiliser,1
utilisera la première occurrence destart
pos2
fait la même chose quepos1
, mais pourend
, et1
utilisera la première occurrence deend
seulement aprèsstart
, les occurrences d'end
avantstart
sont ignorées.la source
Cela pourrait être la solution possible
la source