正则表达式由目标字符串分割到某个字符

时间:2015-06-26 16:05:05

标签: c# regex

我有一个LDAP查询,我需要构建域。

因此,将“DC =”拆分为“逗号”

INPUT:
LDAP:// DC =出头,DC = ELSE,DC = NET \帐户

结果:
SOMETHING.ELSE.NET

2 个答案:

答案 0 :(得分:2)

使用DC=(\w*)正则表达式模式可以非常简单。

var str = @"LDAP://DC=SOMETHINGS,DC=ELSE,DC=NET\account";
var result = String.Join(".", Regex.Matches(str, @"DC=(\w*)")
                                   .Cast<Match>()
                                   .Select(m => m.Groups[1].Value));

答案 1 :(得分:1)

如果没有正则表达式,你可以这样做:

string ldapStr = @"LDAP://DC=SOMETHINGS,DC=ELSE,DC=NET\account";
int startIndex = ldapStr.IndexOf("DC=");
int length = ldapStr.LastIndexOf("DC=") - startIndex;
string output = null;
if (startIndex >= 0 && length <= ldapStr.Length)
{
    string domainComponentStr = ldapStr.Substring(startIndex, length);
    output = String.Join(".",domainComponentStr.Split(new[] {"DC=", ","}, StringSplitOptions.RemoveEmptyEntries));
}

如果您总是以类似的格式获取字符串,那么:

string ldapStr = @"LDAP://DC=SOMETHINGS,DC=ELSE,DC=NET\account";
var outputStr = String.Join(".", ldapStr.Split(new[] {"DC=", ",","\\"}, StringSplitOptions.RemoveEmptyEntries)
                                .Skip(1)
                                .Take(3));

你会得到:

outputStr = "SOMETHINGS.ELSE.NET"