Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将分号分隔的字符串解析为通用列表_C#_Asp.net_Generics - Fatal编程技术网

C# 将分号分隔的字符串解析为通用列表

C# 将分号分隔的字符串解析为通用列表,c#,asp.net,generics,C#,Asp.net,Generics,很抱歉出现错误,我正在更新问题。 我正在编写一个接收以下格式输入的应用程序: someId=00000-000-0000-000000;someotherId=123456789;someIdentifier=3030 有没有办法将这些值添加到通用列表中,以便我的列表包含以下内容 record.someid= 00000-000-0000-000000 record.someotherId =123456789 record.someIdentifier = 3030 很抱歉,我是新手,所

很抱歉出现错误,我正在更新问题。 我正在编写一个接收以下格式输入的应用程序:

someId=00000-000-0000-000000;someotherId=123456789;someIdentifier=3030

有没有办法将这些值添加到通用列表中,以便我的列表包含以下内容

record.someid= 00000-000-0000-000000
record.someotherId =123456789
record.someIdentifier =   3030
很抱歉,我是新手,所以问这个问题

var input = "someId=00000-000-0000-000000;someotherId=123456789;someIdentifier=3030;"
var list = input.Split(';').ToList();
添加到文件头后:

using System.Linq;
添加到文件头后:

using System.Linq;
你需要知道列表的T是什么,在这种情况下,我会把它作为一个字符串。如果您不确定是否使用对象

你需要知道列表的T是什么,在这种情况下,我会把它作为一个字符串。如果您不确定是否使用对象

您可以使用Split来获取字符串中似乎是键/值对组合的部分,并将键和值对添加到字典中

根据OP的注释进行编辑,以添加到自定义类列表中

internal class InputMessage
{
     public string RecordID { get; set;}
     public string Data { get; set;}
}

 string str = "someId=00000-000-0000-000000;someotherId=123456789;someIdentifier=3030";
    string [] arr = str.Split(';');
List<InputMessage> inputMessages = new List<InputMessage>();
for(int i=0; i < arr.Length; i++)
{
       string []arrItem = arr[i].Split('=');
    inputMessages.Add(new InputMessage{ RecordID = arrItem[0], Data = arrItem[1]});         
}
您可以使用Split来获取字符串中似乎是键/值对组合的部分,并将键和值对添加到字典中

根据OP的注释进行编辑,以添加到自定义类列表中

internal class InputMessage
{
     public string RecordID { get; set;}
     public string Data { get; set;}
}

 string str = "someId=00000-000-0000-000000;someotherId=123456789;someIdentifier=3030";
    string [] arr = str.Split(';');
List<InputMessage> inputMessages = new List<InputMessage>();
for(int i=0; i < arr.Length; i++)
{
       string []arrItem = arr[i].Split('=');
    inputMessages.Add(new InputMessage{ RecordID = arrItem[0], Data = arrItem[1]});         
}

如果格式总是如此严格,则可以使用string.Split。您可以创建一个:


如果格式总是如此严格,则可以使用string.Split。您可以创建一个:


您可以从以下代码中使用:

        string str = "someId=00000-000-0000-000000;someotherId=123456789;someIdentifier=3030;";

        int Start, End = 0;

        List<string> list = new List<string>();

        while (End < (str.Length - 1))
        {
            Start = str.IndexOf('=', End) + 1;
            End = str.IndexOf(';', Start);

            list.Add(str.Substring(Start, End - Start));
        } 

您可以从以下代码中使用:

        string str = "someId=00000-000-0000-000000;someotherId=123456789;someIdentifier=3030;";

        int Start, End = 0;

        List<string> list = new List<string>();

        while (End < (str.Length - 1))
        {
            Start = str.IndexOf('=', End) + 1;
            End = str.IndexOf(';', Start);

            list.Add(str.Substring(Start, End - Start));
        } 

String.Split返回字符串[]的数组。@flem抱歉更正了此问题,忘记添加我的角色。只显示您需要知道类型或不指定类型的OP,而不只是说List.String.Split返回字符串[]的数组。@flem抱歉更正了这一点,忘了添加我的强制类型转换。只显示你需要知道类型或不指定类型的OP,而不只是说列表。谢谢你指出错误,我已经更新了问题。谢谢你指出错误,我已经更新了问题。更新了我的答案@lukehennerley更新了我的答案@lukehennerley此答案明显优于其他答案,因为:*用单个Linq表达式表示*它修剪空条目*它提供了索引查找,但缺少的是格式验证,因此,如果格式总是如此严格,如果不遵循格式,即多个“=”分隔符,然后.First/.Last可以返回意外结果此答案明显优于其他答案,因为:*在单个Linq表达式中表示*它修剪空条目*它提供索引查找,但它缺少的是格式验证,因此如果格式总是如此严格-如果不遵循,即多个“=”分隔符,则.First/.Last可以返回意外结果