c# - string.IndexOf 忽略转义序列
问题描述
我正在尝试提取 LDAP DN 字符串的 CN。
这是一个说明问题的示例字符串
var dn = @"CN=Firstname Lastname\, Organization,OU=some ou,DC=company,DC=com";
我想要的是第一个非转义 ',' 字符的位置,它位于第 32 位。
var pos = dn.IndexOf(',');
返回第一个逗号,无论是否转义。现在我IndexOf
可以跳过字符串中的转义逗号吗?
解决方案
您可以使用正则表达式:
string s = @"CN=Firstname Lastname\, Organization,OU=some ou,DC=company,DC=com";
Regex regex = new Regex("(?<!\\\\),", RegexOptions.Compiled);
int firstMatch = regex.Matches(s).FirstOrDefault()?.Index ?? -1;
演示:https ://regex101.com/r/Jxco8K/1
它使用了否定的lookbehind,所以检查所有逗号并查看它是否前面没有反斜杠。
推荐阅读
- javascript - Javascript 滚动和验证表单
- cloud - 如何在juju的ocata openstack中部署多区域?
- python - 同比 年初至今 百分比变化
- java - 使用 COUNT(*) 从 netbean 中的多个表中计算多行
- xamarin.forms - Xamarin Forms UWP 使用参数启动应用程序
- git - 在提交历史中附加一个 git 提交
- angular - Angular 两个按钮提交表单但用途不同
- php - Telegram Bot php 键盘数组按钮动态
- java - 构建抽象类的实例是什么意思?
- r - 如何将月份和日期转换为日期格式?