我有一种情况,我正在寻找更优雅的解决方案。
考虑以下案例
"BKP","bkp","book-to-price" (will represent) BOOK-TO-PRICE
"aop","aspect oriented program" (will represent) ASPECT-ORIENTED-PROGRAM
即。如果用户输入BKP或bkp或预订价格,程序应将其视为BOOK-TO-PRICE。这同样适用于第二个例子(ASPECT-ORIENTED-PROGRAM)。
我有以下解决方案:
解决方案:
if (str == "BKP" || str == "bkp" || str == "book-to-price" ) return "BOOK-TO-PRICE".
但我认为还有许多其他更好的解决方案。
请你们给人一些建议。(举个例子会更好)
我正在使用C#3.0和dotnet framework 3.5
答案 0 :(得分:3)
我会考虑使用可能从配置文件或数据库表中填充的Dictionary<string,string>
,其中包含规范名称关系的别名。使用不区分大小写的键比较器。例如,
var map = new Dictionary<string,string>( StringComparer.OrdinalIgnoreCase );
map.Add( "bkp", "BOOK-TO-PRICE" );
map.Add( "book-to-price", "BOOK-TO-PRICE" );
map.Add( "aop", "ASPECT-ORIENTED-PROGRAM" );
map.Add( "aspect oriented program", "ASPECT-ORIENTED-PROGRAM" );
然后你只需要给出一个O(1)查找键来找到规范名称。
var name = map["bkp"];