繁体   English   中英

将我列表中的字符串转换为列表 c#

[英]convert the strings in my list to a list c#

我对此很陌生,我已经在统一中做了一点 C#,但从来没有真正在 VS 中。

我有一个大致如下的 txt 文件:

星期一;8;服务器 1、服务器 2、服务器 3

星期二;9;server3,server4

星期三;8;服务器 1、服务器 2、服务器 4

我将其分为 3 个列表,一个与天(星期一)...一个与小时(8)...和一个与服务器(服务器 1、服务器 2、服务器 3),但我想将此服务器字符串转换为独特的列表,

例如,我想要一个 list1 包含周一的所有服务器(server1、server2、server3),一个 list2 包含周二的所有服务器(server3、server4)。

这些服务器名称用逗号分隔,我想将每个字符串拆分为一个唯一列表

我知道我不是很清楚,请询问任何规格

List<string> plages_horaires_ouverture = File.ReadAllLines(@"file.txt").ToList();


        foreach (var fileLine in plages_horaires_ouverture)
        {
            var splitLignes = fileLine.Split(new[] { ";" }, StringSplitOptions.None);
            
            listeJoursOuverture.Add(splitLignes[0]);
            listeHeuresOuverture.Add(splitLignes[1]);
            listeServeursOuverture.Add(splitLignes[2]);


        }

此代码将 txt 文件拆分为 3 个包含字符串的单独列表,现在我想将列表“listeServeursOuverture”(对不起法国名称)的每个元素(字符串)转换为唯一列表。 此列表中的每个元素都类似于“server1,server2,server4”或“server2,server3”,并用逗号分隔

有任何想法吗? 我尝试了很多东西,但都没有奏效,这个问题当然很愚蠢,对此我很抱歉

雷诺

使用List.AddRange()

List<String> servers = new List<String>();
servers.AddRange(splitLignes[2].Split(new[] { "," }, StringSplitOptions.None));

我没有将您的数据分散到不同的列表中,而是有一个列表(或者至少是某种 DataStructure。您以后可能会发现字典很有用,也许)。

在那个列表中,我会有一个 Model 类的实例,例如这个:

public class MyModel
{
   public string Day {get; set;}
   public int Hour {get; set;}
   public List<string> Servers {get; set;} = new List<string>();
}

然后,如果我正确阅读了问题,您可以根据需要查找服务器列表。

填充可能是这样的:

foreach (var fileLine in plages_horaires_ouverture)
{
    var splitLignes = fileLine.Split(new[] { ";" }, StringSplitOptions.None);
    
    var model = new MyModel{
        Day = splitLignes[0],
        Hour = int.Parse(splitLignes[1].Trim())
    };
    model.Servers.AddRange(splitLignes[2].Split(new[] { "," }, StringSplitOptions.None));

    listeOverture.Add(model);

    // don't need these anymore.        
    // listeJoursOuverture.Add(splitLignes[0]);
    // listeHeuresOuverture.Add(splitLignes[1]);
    // listeServeursOuverture.Add(splitLignes[2]);
}

我会在这里使用字典:

    List<string> plages_horaires_ouverture = File.ReadAllLines(@"file.txt").ToList();

    Dictionary<KeyValuePair<string, string>,List<string>> servers = new Dictionary<KeyValuePair<string, string>,List<string>>
    foreach (var fileLine in plages_horaires_ouverture)
    {
        var splitLignes = fileLine.Split(new[] { ";" }, StringSplitOptions.None);
        
        KeyValuePair<string, string> key = new KeyValuePair<string, string>(splitLignes[0], splitLignes[1]);
        List<string> serversForDay = splitLignes[2].Split(new[] { "," }, StringSplitOptions.None);

        servers.Add(key, serversForDay);
    }

您可以根据需要编辑名称和类型。 创建一个类对象以根据需要对数据进行排序,然后创建一个返回该类列表的方法。 当您稍后需要处理代码时,这对您来说更清楚。

public List<DataModel> GetListFromData()
        {

            List<string> plages_horaires_ouverture = File.ReadAllLines( @"file.txt" ).ToList();

            List<DataModel> list = new List<Dd>();
            foreach ( var fileLine in plages_horaires_ouverture )
            {
                var splitLignes = fileLine.Split(  ";" , StringSplitOptions.None );

                List<string> d = splitLignes[0].Split( "," ).ToList();
                List<string> h =splitLignes[1].Split( "," ).ToList();
                List<string> s =splitLignes[2].Split( "," ).ToList();
                list.Add( new DataModel( d , h[0] , s ) );
              
            }
            return list;
        }
        class DataModel
        {
            public DataModel( List<string> days,string hour  , List<string> servers )
            {
                Hour = hour;
                Days = days;
                Servers = servers;
            }

            public string Hour { get; set; }
            public List<string> Days { get; set; }
            public List<string> Servers { get; set; }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM