C#从字符串中提取名称
我想从下面的字符串中提取’James ,Brown’,但我并不总是知道这个免费精选名字大全是什么。 逗号给我带来了一些困难,所以你建议提取James ,Brown?
OU = James ,Brown,OU =测试,DC =内部,DC =净
谢谢
正则表达式可能是您最好的方法
static string ParseName(string arg) { var regex = new Regex(@"^OU=([a-zA-Z\]+,s+[a-zA-Z\]+),.*$"); var match = regex.Match(arg); return match.Groups[1].Value; }
你可以使用正则表达式:
string input = @"OU=James, Brown,OU=Test,DC=Internal,DC=Net"; Match m = Regex.Match(input, "^OU=(.*?),OU=.*$"); Console.WriteLine(m.Groups[1].Value);
一个非常脆弱的方法可能是……
string name = @"OU=James, Brown,OU=Test,DC=Internal,DC=Net"; string[] splitUp = name.Split("=".ToCharArray(),3); string namePart = splitUp[1].Replace(",OU",""); Console.WriteLine(namePart);
我不一定会提倡这种方法,但我只是从一个部门的圣诞节rest回来,我的大脑尚未充分参与。
我从一个正则表达式开始分裂组:
Regex rx = new Regex(@"(?
但是从那里我会通过手动拆分它们来拆分数组中的参数,这样你就不必使用依赖于所用分隔符以外的正则表达式。 由于这看起来像LDAP查询,如果你总是查看params [0]可能无关紧要,但有可能将名称设置为“CN =”。 您可以通过阅读这样的查询来涵盖这两种情况:
String name = segments[0].Split('=', 2)[1];
这看起来很像是根据RFC 2253/4514格式化的LDAP或Active Directory专有名称。
除非您正在使用众所周知的名称和/或使用脆弱的hackaround(如正则表达式解决方案),否则您应该首先阅读规范。
如果你像我一样,一般不喜欢根据RFC实现代码 – 那么希望这个人在遵循规范方面比你做得更好。 至少他声称符合2253。
如果格式始终相同:
string line = GetStringFromWherever(); int start = line.IndexOf("=") + 1;//+1 to get start of name int end = line.IndexOf("OU=",start) -1; //-1 to remove comma string name = line.Substring(start, end - start);
原谅如果语法不太正确 – 来自内存。 显然这不是很强大,如果格式发生变化就会失败。
干杯。
如果斜杠始终存在,我会考虑使用RegEx进行匹配,您可以使用匹配组来表示姓氏和免费精选名字大全。
^ OU =([a-zA-Z] ), s([a-zA-Z] )
RegEx将匹配仅包含字符的名称,您需要对其进行一些优化以便更好地匹配非标准名称。 这是一个RegEx测试人员 ,如果你走这条路,可以帮助你。
将,替换为您自己喜欢的魔术字符串(可能是,),拆分剩余的逗号或搜索直到第一个逗号,然后用单个逗号替换您的魔术字符串。
即:像:
string originalStr = @"OU=James, Brown,OU=Test,DC=Internal,DC=Net"; string replacedStr = originalStr.Replace(",", ","); string name = replacedStr.Substring(0, replacedStr.IndexOf(",")); Console.WriteLine(name.Replace(",", ","));
假设您在Windows中运行,请使用PInvoke和DsUnquoteRdnValueW
。 有关代码,请参阅我对其他问题的回答: https : //stackoverflow.com/a/11091804/628981
上述就是C#学习教程:C#从字符串中提取名称分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1012582.html