簡體   English   中英

使用字典將字符串轉換為char

[英]Using dictionary to convert string to char

我有這個代碼

 static string WordMap(string value)
      {
           var strings = value
               .Select(c =>
               {
                   string word;
                   if (!wordMap.TryGetValue(c, out word))
                       word = c.ToString();
                   return word;
               });
           return string.Join("", strings);
       }

和一本看起來像這樣的字典-

static Dictionary<char, string> wordMap = new Dictionary<char, string>()
{
   {'a', "Alpha"}...
}

但是,我不想把字符變成文字,而是想做相反的事情。 但是因為我是一個真正的初學者,所以我無法弄清楚。

我看到我的意思感到困惑:

//i want this 
input = alpha beta gama dalta
output = abgd
//i get this
input = alpha beta gama dalta
output = alpha lama pyhton hexa alpha...

看起來您想要做的是將映射從字符串反向轉換為char。 假設您已經完成了

static Dictionary<char, string> wordMap = new Dictionary<char, string>()
{
    {'a', "Alpha"}...
}

因此,我們為另一個方向進行了新的映射:

static Dictionary<string, char> charMap;

public static void ConvertLookup ()
{
    charMap = wordMap.ToDictionary(e => e.Value, e => e.Key);
}

但是,這假定的一件事是您的字符串是唯一的。

EDIt:因此,進一步介紹一下,據我了解,您想雙向發展。 因此,我們可以將所有內容放在一起,得到以下內容:

    static Dictionary<char, string> wordMap = new Dictionary<char, string>();
    static Dictionary<string, char> charMap = new Dictionary<string, char>();

    public static void InitializeLookups()
    {
        wordMap = new Dictionary<char, string>
        {
            { 'A', "Alice" },
            { 'B', "Bob" },
            { 'C', "Charlie" }
        };

        charMap = wordMap.ToDictionary(e => e.Value, e => e.Key);
    }

    public static string ConvertCharToWords(string chars)
    {
        var strings = chars
              .Select(c =>
              {
                  string word;
                  if (!wordMap.TryGetValue(c, out word))
                      word = c.ToString();
                  return word;
              });
        return string.Join(" ", strings);
    }
    public static string ConvertWordsToChars(string words)
    {
        var strings = words.Split(' ')
              .Select(c =>
              {
                  char character;
                  if (!charMap.TryGetValue(c, out character))
                      character = '?';
                  return character;
              });
        return string.Join("", strings);
    }

    public static void Main(string[] args)
    {
        InitializeLookups();
        string words = ConvertCharToWords("ABC");
        string chars = ConvertWordsToChars(words);

        Console.WriteLine(words);
        Console.WriteLine(chars);
    }

輸入:

ABC

輸出:

Alice Bob Charlie
ABC

只是倒退。

static Dictionary<string, char> Mapword = new Dictionary<string, char>()
{
   {"Alpha", 'a'}...
}
Dictionary<char, string> wordMap = new Dictionary<char, string>()
            {
                {'a', "Alpha"},
                {'b', "Beta"},
                {'d', "Dalta"},
                {'g', "Gama"},
            };
 var input = "Alpha Beta Gama Dalta";

 var output = input.Split()
                    .Select(word => wordMap.Where(x => x.Value == word)
                    .Select(x => x.Key).First());
 var result = string.Join("", output);
 Console.WriteLine(result);

// Output:
// abgd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM