【发布时间】:2013-12-01 03:10:29
【问题描述】:
我有一个从 Excel 表中导入列的函数,然后我将列名放入列表中。
我有一个“系统列”列表,导入的列最终将与之映射。
用户稍后将能够将这些列映射到任何系统列,但我希望通过智能地尝试将导入的列名称与最接近它的系统列名称进行匹配来简化此过程。
例如
导入他们的列后,我可能有以下导入列的列表:
List<string> importedColumnNames = importService.ResolveColumnNames();
Console.WriteLine(importedColumnNames[0]); //Prints 'Security_ID'
Console.WriteLine(importedColumnNames[1]); //Prints 'User_ID'
Console.WriteLine(importedColumnNames[2]); //Prints 'Date'
*注意*写入控制台的代码只是为了显示一些示例导入的列名。
此外,系统列名称的代码可能如下:
List<string> systemColumnNames = GetSystemColumnNames();
Console.WriteLine(systemColumnNames[0]); //Prints 'Security Identifier' or 'Security ID'
Console.WriteLine(systemColumnNames[1]); //Prints 'User' or 'User Identifier'
Console.WriteLine(systemColumnNames[2]); //Prints 'Item Date' or 'Datetime'
一旦这些被导入,我希望能够找到一种方法将导入的ColumnNames 与最接近的匹配系统列名值匹配。
Dictionary<string,string> matchedImportedColumns = MatchService.Match(importedColumnNames,systemColumnNames);
foreach(var item in matchedImportedColumns)
{
Console.WriteLine("Imported Value '{0}' was matched to System Value '{1}',item.Key,item.Value);
}
这有望打印出如下内容:
Imported Value 'Security ID' was matched to System Value 'Security Identifier'
Imported Value 'User ID' was matched to System Value 'User'
Imported Value 'Date' was matched to System Value 'Item Date'
还有一点需要注意的是,我希望对此有一个问题是是否使其区分大小写。我希望这可能是我可以在运行时做的事情,只需传入一个是否区分大小写进行匹配的布尔标志。
提前谢谢。
【问题讨论】:
-
有人愿意告诉我为什么这被否决了吗?
标签: c# regex algorithm pattern-matching string-matching