c# - Lambda 表达式:从较大的字符串中挑选出一个子字符串
问题描述
这是我试图处理的字符串
var str =
"$filter=HRRepName ne null and HRRepName ne '' and HRRepName eq 'jessica.l.hessling'&$top=1"
目前使用下面的代码来获取子字符串- jessica.l.hessling
var repName = odataQuery
.Split(new string[] { "eq" }, StringSplitOptions.RemoveEmptyEntries)[1]
.Split(new char[] { (char)39 })[1]
.Replace("'", "")
.Trim();
但是这个索引可能会在以后产生错误,因此我想使用 lambda 表达式。
我到目前为止所尝试的:
var repName2 = odataQuery
.Split(new string[] { "HRRepName" }, StringSplitOptions.RemoveEmptyEntries)
.Select(s.Substring(s.IndexOf("eq",StringComparison.Ordinal)+1));
解决方案
好吧,我认为 Regex 在这里可能是一个很好的选择,试试下面的代码:
var str = "$filter=HRRepName ne null and HRRepName ne '' and HRRepName eq 'jessica.l.hessling'&$top=1";
var match = (new Regex(@"HRRepName eq '([^']+)")).Match(str);
var extractedString = match.Success ? match.Groups[1] : null;
说明:HRRepName eq '([^']+)
将按HRRepName eq '
字面意思匹配,然后将匹配所有内容,直到'
字符带有([^']+)
,括号表示它将存储在捕获组中。
推荐阅读
- android - 如何在 MyFirebaseMessagingService 中获取 recent_token
- node.js - 如何在猫鼬的 $set 中使用 $push?
- linux - 为什么手动 pci 地址空间计算与 lspci 输出不同
- python - pyglet 中的平滑移动
- c# - 在 MVC 中将参数传递给控制器,而 url 没有变化
- c# - 要列出的词典词典
- c# - 如何在不更改 DataContext 的情况下使内容动态化
- python - 跟踪python元组中值的增量和减量
- powerbi - Power BI 表转换
- angular - ngFor 创建列但不显示数据