我有一個這樣的字符串:轉換 「#BAL#」 到 「#225#」 用C#
string ussdCommand = "#BAL#";
我想將其轉換成 「#225#」。目前,我已經定義了這樣的解釋:
Dictionary<string, int> dictionary = new Dictionary<string, int>();
dictionary.Add("ABC", 2);
dictionary.Add("DEF", 3);
dictionary.Add("GHI", 4);
dictionary.Add("JKL", 5);
dictionary.Add("MNO", 6);
dictionary.Add("PQRS", 7);
dictionary.Add("TUV", 8);
dictionary.Add("WXYZ", 9);
然後,我有一個不接受我的原字符串(「#BAL#」),並將其轉換這樣的功能:
private static string ConvertLettersToPhoneNumbers(string letters)
{
string numbers = string.Empty;
foreach (char c in letters)
{
numbers += dictionary.FirstOrDefault(d => d.Key.Contains(c)).Value.ToString();
}
return numbers;
}
正如你馬上注意到的那樣,問題是我的字典不包含「#」的條目,因此.FirstOrDefault()返回默認值,我返回的是「02250」而不是「#225#」。我沒有#號字典條目,因爲它不對應一個數字,但有沒有辦法修改或覆蓋.FirstOrDefault()中的默認返回值,以便它在任何時候只發回#號在我的輸入字符串?
謝謝喬恩。這是一個好主意! – user685869 2013-03-07 05:12:00
謝謝你的.DefaultIfEmpty()解釋。 – user685869 2013-03-07 05:14:17