C# 在c中解析以获取调用方ID
我有这根绳子 =inbound&CallerState=IN&ToZip=&CallSid=CA35B8F8162EEFFEF07D4FC7C9EADD94&To=%2B123475&CallerZip=406&ToCountry=US&ApiVersion=2010-04-01&CalledZip=&CallSid=CA35B8F8162EEFFEF07D4FC7C9EADD94&To=%2B123475&CallerZip=406&ToCountry=US&ApiVersion=2010-04-01&CalledChip=&CallSid=&CalledCity=&CallSid=Ring&FromCity=2B1260606&AccountSid=AccountSid=ACC6D06B4CB6B6B6CCBFBFBFF46B61mZip=466&FromState=INC# 在c中解析以获取调用方ID,c#,twilio,C#,Twilio,我有这根绳子 =inbound&CallerState=IN&ToZip=&CallSid=CA35B8F8162EEFFEF07D4FC7C9EADD94&To=%2B123475&CallerZip=406&ToCountry=US&ApiVersion=2010-04-01&CalledZip=&CallSid=CA35B8F8162EEFFEF07D4FC7C9EADD94&To=%2B123475&CallerZip=406&ToCountry=US&ApiVersion=2010-0
我想从这个字符串中获取CallSid。实现这一点的最佳方法是什么?您可以借助非常简单的正则表达式来实现 关于这个话题,有很多很好的文章 正则表达式选项 RegexOptions.IgnoreCase 表示正则表达式不区分大小写 RegexOptions.Compiled 如果要多次使用正则表达式,那么预编译它可能会很有用。这可以稍微提高性能 雷格克斯游乐场
查看游乐场了解其工作原理:这是一种非正则方法
const string BEGIN_MARKER = "CallSid=";
var str = "=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 begin = str.IndexOf(BEGIN_MARKER) + BEGIN_MARKER.Length;
var end = str.IndexOf('&', begin);
var sid = str.Substring(begin, end - begin);
使用CallSid=part,我们检索Sid的第一个字符的索引,然后使用该索引检索Sid的结束位置。当使用string.Substringchar值int startIndex时,该方法从startIndex开始搜索
最后,使用这两个值来提取子字符串。您可以使用System.Web.HttpUtility.ParseQueryString函数,您需要使用System.Web程序集,但不需要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"];
一种简单的方法是拆分&字符上的字符串,然后找到以CallSid=开头的部分,如果存在,则在=字符上拆分它,并在索引1处获取第二项:
使用字符串。拆分两次请编辑您的问题以添加一个?您在示例中的结果正好如此。试试C代码:
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"];
var callSid = input
.Split('&')
.FirstOrDefault(x => x.StartsWith("CallSid=",
StringComparison.OrdinalIgnoreCase))
?.Split('=')[1]; // '?.' is used here in case result is null