【问题标题】:String pattern searching in Multidimensional String array [,]多维字符串数组 [,] 中的字符串模式搜索
【发布时间】:2015-11-04 17:13:25
【问题描述】:

假设我有一个代表员工信息的多维对象数组

String[,] Employee= new object[,] { 
             {"john","MBA#MBA#BE#MBA#BE"},
             {"jan","MS#MSC#MBA"},

};

可视化

 john                 MBA#MBA#BE#MBA#BE    
 jan                   MS#MSC#MBA

我想删除重复的数据(其中数据除以#)

 john                 MBA#BE   
 jan                  MS#MSC#MBA

【问题讨论】:

  • 为什么不创建一个合适的类而不是使用数组?
  • 你最好使用字典。

标签: c# arrays string c#-4.0 multidimensional-array


【解决方案1】:

对于这种情况,最好使用字典:

Dictionary<string, string> employee = new Dictionary<string, string>()
{
    {"john", "MBA#MBA#BE#MBA#BE"},
    {"jan", "MS#MSC#MBA"}
}

Dictionary<string, string> result = new Dictionary<string, string>();

foreach (var kvp in employee)
{
    result[kvp.Key] = string.Join("#", kvp.Value.Split('#').Distinct());
}

result 字典将包含结果:

// Prints "MS#MSC#MBA"
Console.WriteLine(result["jan"]);

// Prints "MBA#BE"
Console.WriteLine(result["john"]);

【讨论】:

    【解决方案2】:

    我个人会创建一个类来保存该信息

    public class Employee
    {
        public Employee(string name)
        {
            Name = name;
            Degress = new HashSet<string>();
        }
    
        public string Name { get; private set; }
        public HashSet<string> Degrees { get; private set; }
    }
    

    然后你可以像这样填充它们的列表

    string[,] employeeArray = { { "john", "MBA#MBA#BE#MBA#BE" }, { "jan", "MS#MSC#MBA" } };
    
    List<Employee> employees = new List<Employee>();
    
    for (int i = 0; i < employeeArray.GetLength(0); i++)
    {
        Employee employee = new Employee(employeeArray[i,0]);
        foreach (var degree in employeeArray[i, 1].Split('#'))
        {
            employee.Degrees.Add(degree);
        }
    
        employees.Add(employee);
    }
    
    foreach (var e in employees)
    {
        Console.WriteLine(e.Name + " " + string.Join(" ", e.Degress));
    }
    

    打印出来的

    约翰 MBA BE

    一月 MS MSC MBA

    因为DegreesHashSet,所以它不允许重复,当您尝试将重复传递给Add 时,它只会返回false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      相关资源
      最近更新 更多