c# - 改进我的代码:正则表达式解析逗号分隔的数字列表

标签 c# regex

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;
    }
}


它有效,但我的主要重点只是使用Regex仅将数字放在字符串数组中。完成同一件事是否有短暂而甜蜜的东西?

编辑:

我正在使用Regex,因为我需要解析以下内容:

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();

最佳答案

而不是使用Regex编写此代码,为什么不尝试使用LINQ

试试这个:

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


但是,如果要坚持使用数组,请使用以下命令:

var yourList = a.Split(',').Select(sValue => sValue.Trim()).ToArray();

关于c# - 改进我的代码:正则表达式解析逗号分隔的数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16096660/

相关文章:

javascript - 如何使用 JS 正则表达式捕获键后的特定 JSON 值?

regex - 通配符的行为是否有所不同?

javascript - 如何像 mysql 一样从 jQuery 中的 json 或数组数据搜索名称

javascript - Regex jQuery find ("option:[text^=' "]) 在 ie 8 和 chrome 上出现错误

正则表达式 - 选择字符串中的模式

c# - 流利的 NHibernate : SetBatchSize vs. AdoNetBatchSize

c# - 仅用 1 个空格替换非字母数字字符和多个空格

c# - 如何在动态类型上执行字符串路径?

C# 在 TCP 上读取数据并不总是读取所有数据

c# - 如何计算只有起点和终点的贝塞尔曲线?