开发者

Regular expression to split string and number

I have a string of the form:

codename123

Is there a regular expression that can be used with Regex.Split() to split the alphab开发者_如何学Pythonetic part and the numeric part into a two-element string array?


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;


splitArray = Regex.Split("codename123", @"(?<=\p{L})(?=\p{N})");

will split between a Unicode letter and a Unicode digit.


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.


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.


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.


Well, is a one-line only: Regex.Split("codename123", "^([a-z]+)");


Another simpler way is

string originalstring = "codename123";
string alphabets = string.empty;
string numbers = string.empty;

foreach (char item in mainstring)
{
   if (Char.IsLetter(item))
   alphabets += item;
   if (Char.IsNumber(item))
   numbers += item;
}


this code is written in java/logic should be same elsewhere

public String splitStringAndNumber(String string) {
    String pattern = "(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)";

    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(string);
    if (m.find()) {
        return (m.group(1) + " " + m.group(2));
    }
    return "";
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜