简体   繁体   中英

Regex to split by a Targeted String up to a certain character

I have an LDAP Query I need to build the domain.

So, split by "DC=" up to a "comma"

INPUT:
LDAP://DC=SOMETHINGS,DC=ELSE,DC=NET\\account

RESULT:
SOMETHING.ELSE.NET

You can do it pretty simple using DC=(\\w*) regex pattern.

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));

Without Regex you can do:

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));
}

If you are always going to get the string in similar format than you can also do:

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

And you will get:

outputStr = "SOMETHINGS.ELSE.NET"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM