如何将字符串转换为char(到字符串)

时间:2014-01-31 21:41:47

标签: c#

我希望标题不会让你太困惑。这就是我想要的:

static Dictionary<string, char> charMap = new Dictionary<string, char>()
       {
           {"alpha ", 'a'},{"beta ",'Y'},{"gamma ", 'g'},{"delta", '='}
       };

       static string CharMap(string value)
       {
           var strings = value
               .Select(c =>
               {
                   string letter;
                   if (!charMap.TryGetValue(the, out letter))
                       letter = c.ToString();
                   return letter;
               });
           return string.Join("", strings);
       }

我想要这个:

输入 - alpha beta gamma delta

输出 - aYg =

如何让这段代码生效?

7 个答案:

答案 0 :(得分:1)

试试这个

 var stringToSearch =  value.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
 var Result = string.Concat( charMap.Where(o => stringToSearch.Contains(o.Key)).ToList().Select(a => a.Value));

答案 1 :(得分:1)

static Dictionary<string, char> charMap = new Dictionary<string, char>()
   {
        {"alpha", 'a'}, {"beta", 'Y'}, {"gamma", 'g'}, {"delta", '='}
   };

void Main()
{
    var input = "alpha beta gamma delta";

    var result = CharMap(input);
}

public string CharMap(string input)
{
    var result = "";

    foreach (var item in input.Split(' '))
    {
        result += charMap[item];    
    }

    return result;
}

结果:

  

AYG =

答案 2 :(得分:0)

如何使用正则表达式,如下所示:

static Dictionary<string, string> charMap = new Dictionary<string, string>()
{
   {"alpha", "a"},{"beta","Y"},{"gamma", "g"},{"delta", "="}
};

static string CharMap(string value)
{
    return Regex.Replace(value, @"(\w+)\s*", m => {
        string result;
        charMap.TryGetValue(m.Groups[1].Value, out result);
        return result ?? m.Groups[1].Value;
    });
}

Console.WriteLine(CharMap("alpha beta gamma delta")); // aYg=

答案 3 :(得分:0)

不要忘记将你的字符串拆分。也只是+ =(concat)带字符串的字符,你应该很好。

   static Dictionary<string, char> charMap = new Dictionary<string, char>()
   {
       {"alpha ", 'a'},{"beta ",'Y'},{"gamma ", 'g'},{"delta", '='}
   };

   static string CharMap(string value)
   {

        string [] split = value.Split(new Char [] {' '});
        string entireString = string.Empty;
        for(string str in split)
    {
        char letter;
        if (charMap.TryGetValue(the, out letter))
        entireString += letter;
    }
        return entireString;
   } 

答案 4 :(得分:0)

你可以做点什么,

static string CharMap(string value)
{
    char l;
    return string.Join(
        string.Empty, 
        value.Split(' ').Select(v => charMap.TryGetValue(v, out l) ? l.ToString() : string.Empty));
}

答案 5 :(得分:0)

You already asked this same question。我之前为您发布的代码完美无缺。

但是,请看一下您在此处提供的输入:

{"alpha ", 'a'},{"beta ",'Y'},{"gamma ", 'g'},{"delta", '='}

请注意,您在每个密钥的末尾都有 SPACES "alpha{SPACE}"

将其更改为:

{"alpha", 'a'},{"beta",'Y'},{"gamma", 'g'},{"delta", '='}

编辑:小提琴中的完整代码:http://dotnetfiddle.net/VDn0mD

输出:

  

AYG =

答案 6 :(得分:0)

这意味着对Vlad Bezden的帖子发表评论,但我还没有50个声誉。

这似乎是OP所要求的:

输入=&gt; &#34; alpha beta gamma delta&#34;

输出=&gt; &#34; AYG&#34;

OP似乎是使用字符串上的LINQ作为集合将输入字符串拆分为所有字符,因此:

&#34; alpha beta gamma delta&#34;成为&#39;&#39;&#39;&#39;&#39;&#39;&#39; h&#39;&#39; a&#39;&#39;&#39;&#39; &#39;等...

如果OP想要反转上述功能:

输入=&gt; &#34; AYG&#34; 输出=&gt; &#34; alpha beta gamma delta&#34;

为简单起见,您应该创建反向字典并从那里查找值,因为值可能会发生冲突。