从字符串中分割出整数

Joe*_*orn 10 .net string .net-2.0

假设我有一个网页,目前通过url参数接受单个ID值:http://example.com/mypage.aspx? ID =
1234

我想将其更改为接受ID 列表,如下所示:http:
//example.com/mypage.aspx?IDs = 1234,4321,6789

所以我的代码可以通过context.Request.QueryString ["IDs"]作为字符串使用. 将该字符串值转换为List <int>的最佳方法是什么?

编辑:我知道如何在逗号上执行.split()来获取字符串列表,但我问,因为我不知道如何轻松地将该字符串列表转换为int列表.这仍然是.Net 2.0,所以没有lambdas.

Ovi*_*vid 13

那些提供明确答案的人没有冒犯,但很多人似乎在回答你的问题,而不是解决你的问题.你想要多个ID,所以你认为你可以这样:

http://example.com/mypage.aspx?IDs=1234,4321,6789

问题是这是一个不可靠的解决方案.在将来,如果您想要多个值,如果他们有逗号,您会怎么做?更好的解决方案(这在查询字符串中完全有效)是使用具有相同名称的多个参数:

http://example.com/mypage.aspx?ID=1234;ID=4321;ID=6789

然后,您使用的任何查询字符串解析器都应该能够返回ID列表.如果它无法处理(并且还处理分号而不是&符号),那么它就会被破坏.


Com*_*his 11

像这样的东西可能会起作用:

public static IList<int> GetIdListFromString(string idList)
{
    string[] values = idList.Split(',');

    List<int> ids = new List<int>(values.Length);

    foreach (string s in values)
    {
        int i;

        if (int.TryParse(s, out i))
        {
            ids.Add(i);
        }
    }

    return ids;
}
Run Code Online (Sandbox Code Playgroud)

然后将使用哪个:

string intString = "1234,4321,6789";

IList<int> list = GetIdListFromString(intString);

foreach (int i in list)
{
    Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)