I have a string of the form:
codename123
Is there a regular expression that can be used with Regex.Split()
to split the alphabetic part and the numeric part into a two-element string array?
I have a string of the form:
codename123
Is there a regular expression that can be used with Regex.Split()
to split the alphabetic part and the numeric part into a two-element string array?
A little verbose, but
Regex.Split( "codename123", @"(?<=[a-zA-Z])(?=\d)" );
Can you be more specific about your requirements? Maybe a few other input examples.
splitArray = Regex.Split("codename123", @"(?<=\p{L})(?=\p{N})");
will split between a Unicode letter and a Unicode digit.
I know you asked for the Split
method, but as an alternative you could use named capturing groups:
var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)");
var match = numAlpha.Match("codename123");
var alpha = match.Groups["Alpha"].Value;
var num = match.Groups["Numeric"].Value;
Regex is a little heavy handed for this, if your string is always of that form. You could use
"codename123".IndexOfAny(new char[] {'1','2','3','4','5','6','7','8','9','0'})
and two calls to Substring.
IMO, it would be a lot easier to find matches, like:
Regex.Matches("codename123", @"[a-zA-Z]+|\d+")
.Cast<Match>()
.Select(m => m.Value)
.ToArray();
rather than to use Regex.Split
.