J'ai cette chaîne p>
"= entrant & CallerState = IN & ToZip = & CallSid = CA35b8f8162eeffebf07d4fc7c9aeadd94 strong> & A =% 2B123475 & CallerZip = 406 & ToCountry = US & apiVersion = 2010-04-01 & CalledZip = & CalledCity = & CallStatus = sonnerie & From =% 2B12606 & AccountSid = ACc6d06b4cb61ccbfa61bf461957a5a626 & CalledCountry = US & CallerCity = AUBURN & appelant = % 2B1265506 & Fromntry = US & Tocity = & FromCity = AURN & KITESTATE = IN & TIGEZIP = 466 & Fromstate = in " p> blockQuote>
Je voudrais obtenir les appelsId de cette chaîne. Quelle serait la meilleure façon de réaliser cela? p>
4 Réponses :
Vous pouvez le faire avec une aide d'une expression régulière assez simple.
Il y a un très bon article sur ce sujet sur DotNetPerls . P> signifie que l'expression régulière n'est pas sensible à la casse. p> Il pourrait être utile de précompiler l'expression régulière si vous êtes va l'utiliser plus que peu de fois. Cela peut légèrement améliorer les performances. P> Aire de jeu de Regex strong> P> Découvrez le terrain de jeu pour comprendre comment cela fonctionne: https://regex101.com/r/pu6kmz/1 p> p> regexoption.ignorecase code> p>
Regexoptions.Compiled code> p>
Vous avez exactement un tel résultat dans l'exemple. Essayez simplement le code C #: DotNetFiddle.net/1p4z1x
Ceci est une méthode non-regex. à l'aide de la pièce enfin, utilisez les deux valeurs pour extraire une sous-chaîne. p> p> appelsId = code>, nous récupérons l'index du premier caractère du
SID < / Code>, puis récupérez la position finale du
SID code> en utilisant cela. Lorsque vous utilisez
string.substring (valeur de caractère, int startindex) code>, la méthode commence à rechercher début au début du
startindex code>. P>
Vous pouvez le faire avec système.web.httbutilité.Parrefour, vous auriez besoin d'utiliser l'assemblage System.Web, mais il ne nécessitera pas de contexte Web.
string querystring = "=inbound&CallerState=IN&ToZip=&CallSid=CA35b8f8162eeffebf07d4fc7c9aeadd94&To=%2B123475&CallerZip=406&ToCountry=US&ApiVersion=2010-04-01&CalledZip=&CalledCity=&CallStatus=ringing&From=%2B12606&AccountSid=ACc6d06b4cb61ccbfa61bf461957a5a626&CalledCountry=US&CallerCity=AUBURN&Caller=%2B1265506&FromCountry=US&ToCity=&FromCity=AURN&CalledState=IN&FromZip=466&FromState=IN"; NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring); string callSID = qscoll["CallSid"];
Un moyen simple de faire est de diviser la chaîne sur le caractère & code>, puis recherchez la pièce qui commence par
"appelsId =" code>, et si cela existe, Débitez-le sur le caractère
= code> et prenez le deuxième élément (à l'index
1 code>):
Utilisez string.split (deux fois)
Veuillez modifier votre question pour ajouter un exemple minimal, reproductible ?