首页 > 解决方案 > 在 C# 中解析以获取调用方 ID

问题描述

我有这个字符串

"=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"

我想从此字符串中获取 CallSid。实现这一目标的最佳方法是什么?

标签: c#twilio

解决方案


您可以借助非常简单的正则表达式来完成此操作。

DotNetPerls上有关于该主题的非常好的文章。

var input = "=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";

var regex = new Regex(@"\&CallSid=([a-z0-9]+)\&", RegexOptions.IgnoreCase | RegexOptions.Compiled);

var match = regex.Match(input);
var result = match
    .Groups[1] // First round brackets has index "1"
    .Captures[0] // You expect to have only one match
    .Value;

正则表达式选项

RegexOptions.IgnoreCase

表示正则表达式不区分大小写。

RegexOptions.Compiled

如果要多次使用正则表达式,预编译它可能很有用。这可以稍微提高性能。

正则表达式操场

查看操场以了解其工作原理:https ://regex101.com/r/pU6KMz/1


推荐阅读