多维字符串数组[,]中的字符串模式搜索

本文关键字:字符串 模式搜索 数组 | 更新日期: 2023-09-27 18:20:36

假设我有一个表示员工信息的多维对象数组,例如

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

多维字符串数组[,]中的字符串模式搜索

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

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"]);

就我个人而言,我会创建一个类来保存信息

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

jan MS MSC MBA

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