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

このコードを Regex で書く代わりに、 を使ってみません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 に答える