c# - 在 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。实现这一目标的最佳方法是什么?
解决方案
您可以借助非常简单的正则表达式来完成此操作。
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
推荐阅读
- javascript - 使用 foreach 将对象推送到数组
- node.js - 如何按最新对新项目进行排序?
- visual-studio - Visual Studio 2019(社区):无法创建具有任何编程语言和操作系统规范的新项目
- python - 连接 Angular 10 + Django Api Rest 没有渲染对象
- python - Flask Security 更新密码不起作用
- javascript - 如何将坐标映射到对象(角度)
- r - 如果第一列中没有标题,如何使用 ggplot 创建折线图?
- python - Pandas - 为什么会抛出 ValueError?
- swift - Swift 数组分块问题中的组合数组和索引范围问题
- php - 如何将数字与php字符串的末尾分开并将它们保存到不同的变量中