基本上尝试
在普通的 c# 中,我的工作原理与此类似:
foreach(char c in wholeString)
if(dictionary.containskey(c))
stringArray.Add(dictionary[c]);
return stringArray;
我在 C# 函数式风格或下面的 linq 中的失败尝试:
string inputString = "//comment";
Dictionary<char, string> crossRefDict;
crossRefDict.Add('/', "DIVIDE");
crossRefDict.Add('a', "ALPHA");
crossRefDict.Add('b', "ALPHA");
Func<Dictionary<char,string>, IEnumerable<char>, IEnumberable<string>> returnCharRefs
= (dictionary, characters) => characters.Select(x => dictionary[characters]);
IEnumerable<char> inputCharacters = inputString.Select(x => x);
IEnumerable<string> characterReferences = returnCharRefs(crossRefDict, inputCharacters);
return characterReferences;
每当字典比较遇到不存在的键时,它就会不断返回一个结果或空结果。这可能应该很简单,但我很挣扎。
您可以使用查询语法:
return from c in inputString
where dictionary.ContainsKey(c)
select dictionary[c];
或LINQ:
return inputString
.Where(dictionary.ContainsKey)
.Select(c => dictionary[c]);