C# 将数组拆分为另一个数组

C# 将数组拆分为另一个数组,c#,.net,arrays,split,C#,.net,Arrays,Split,我有一个如下的字符串数组: string[] Array = new string[3] {"Man(21)", "Woman(33)", "Baby(4)"}; 现在我想将此阵列拆分为以下方案: Array = new string[6] {"Man", "21", "Woman", "33", "Baby", "4"}; 有人知道吗?你可以使用 您可以尝试使用正则表达式: var pattern = @"(?<person>\w+)\((?<age>\d

我有一个如下的字符串数组:

string[] Array = new string[3] {"Man(21)", "Woman(33)", "Baby(4)"};
现在我想将此阵列拆分为以下方案:

Array = new string[6] {"Man", "21", "Woman", "33", "Baby", "4"};
有人知道吗?

你可以使用


您可以尝试使用正则表达式:

    var pattern  = @"(?<person>\w+)\((?<age>\d+)\)";
    var Array = new string[3] { "Man(21)", "Woman(33)", "Baby(4)" };
    Array = Array.SelectMany(item =>
    {
        var match = Regex.Match(item, pattern, RegexOptions.IgnoreCase);
        var person = match.Groups["person"].Value;
        var age = match.Groups["age"].Value;
        return new List<string>{person, age};
    }).ToArray();
var模式=@“(?\w+)\(?\d+)”;
var数组=新字符串[3]{“Man(21)”,“Woman(33)”,“Baby(4)”};
数组=数组。选择多个(项=>
{
var match=Regex.match(项、模式、RegexOptions.IgnoreCase);
var person=match.Groups[“person”].Value;
var age=match.Groups[“age”].Value;
返回新列表{个人,年龄};
}).ToArray();

根据用例,您可能会发现输出具有
名称
年龄
属性的对象列表或字典更有用。以下是前者的一个例子:

        string[] arr = new[] { "Man(21)", "Woman(33)", "Baby(4)", /* test case */ "NoAge" };
        var result = arr.Select(s => s.Split(new[] { '(', ')' }, StringSplitOptions.RemoveEmptyEntries)).Select(r => new
        {
            Name = r.First(),
            Age = r.Skip(1).SingleOrDefault()
        }).ToList();
结果是:

姓名年龄

男21

女33

婴儿4

诺奇零


由于使用了
Split
命令,dotctor获得了荣誉。

@downvoter:为什么要进行downvote?如果我们不想在这个方案中得到结果,我们需要做的是:“Name=Man,Age=21”然后看到“Man,21”我用了这个代码而不是你的:
var result=arr.Select(s=>s.Split(new[]{'(',')},StringSplitOptions.removemptyentries)).Select(r=>new[]{r.First(),r.Skip(1).SingleOrDefault()}).ToList()但得到一个二维变量。
    var pattern  = @"(?<person>\w+)\((?<age>\d+)\)";
    var Array = new string[3] { "Man(21)", "Woman(33)", "Baby(4)" };
    Array = Array.SelectMany(item =>
    {
        var match = Regex.Match(item, pattern, RegexOptions.IgnoreCase);
        var person = match.Groups["person"].Value;
        var age = match.Groups["age"].Value;
        return new List<string>{person, age};
    }).ToArray();
        string[] arr = new[] { "Man(21)", "Woman(33)", "Baby(4)", /* test case */ "NoAge" };
        var result = arr.Select(s => s.Split(new[] { '(', ')' }, StringSplitOptions.RemoveEmptyEntries)).Select(r => new
        {
            Name = r.First(),
            Age = r.Skip(1).SingleOrDefault()
        }).ToList();