-1
votes

analyser en C # pour obtenir un appelerid

J'ai cette chaîne

"= entrant & CallerState = IN & ToZip = & CallSid = CA35b8f8162eeffebf07d4fc7c9aeadd94 & 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 "

Je voudrais obtenir les appelsId de cette chaîne. Quelle serait la meilleure façon de réaliser cela?


2 commentaires

Utilisez string.split (deux fois)


Veuillez modifier votre question pour ajouter un exemple minimal, reproductible ?


4 Réponses :


4
votes

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 . xxx

Options de regex

regexoption.ignorecase

signifie que l'expression régulière n'est pas sensible à la casse.

Regexoptions.Compiled

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.

Aire de jeu de Regex

Découvrez le terrain de jeu pour comprendre comment cela fonctionne: https://regex101.com/r/pu6kmz/1


1 commentaires

Vous avez exactement un tel résultat dans l'exemple. Essayez simplement le code C #: DotNetFiddle.net/1p4z1x



0
votes

Ceci est une méthode non-regex. xxx

à l'aide de la pièce appelsId = , nous récupérons l'index du premier caractère du SID < / Code>, puis récupérez la position finale du SID en utilisant cela. Lorsque vous utilisez string.substring (valeur de caractère, int startindex) , la méthode commence à rechercher début au début du startindex .

enfin, utilisez les deux valeurs pour extraire une sous-chaîne.


0 commentaires

3
votes

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"];



0 commentaires

0
votes

Un moyen simple de faire est de diviser la chaîne sur le caractère & , puis recherchez la pièce qui commence par "appelsId =" , et si cela existe, Débitez-le sur le caractère = et prenez le deuxième élément (à l'index 1 ): xxx


0 commentaires