1

LinqPad 中的这段代码在正则表达式中输出一串数字:

void Main()
{
    string a = "1, 2, 3, 4, 5, 6, 7";
    var myList = Regex.Match(a, @"^\s*((\d+)\s*,?\s*)+\s*$")
        .Groups[2].Captures.ToList();
    myList.Dump();
}

public static class EM
{
    public static List<string> ToList( this CaptureCollection value)
    {
        var result = new List<string>();
        foreach( var item in value)
        {
            result.Add( ((Capture) item).Value );
        }
    return result;
    }
}

它有效,但我的主要关注点只是使用正则表达式仅将数字放入字符串数组中。是否有一些简短而甜蜜的事情可以完成同样的事情?

编辑:

我正在使用正则表达式,因为我需要解析如下内容:

string a = "deptid = 1, 2, 3, 4, 5, 6, 7";
var myList = Regex.Match(a, 
             @"^\s*(?<field>[A-Za-z0-9]+)\s*(?<op>==?)\s*((\d+)\s*,?\s*)+\s*$")
             .Groups[2].Captures.ToList();
4

1 回答 1

8

而不是用正则表达式编写这段代码,你为什么不尝试使用LINQ

试试这个:

List<string> yourList = a.Split(',').Select(sValue => sValue.Trim()).ToList();

但是如果你想坚持使用数组,那么使用这个:

var yourList = a.Split(',').Select(sValue => sValue.Trim()).ToArray();
于 2013-04-19T03:26:22.593 回答