我希望标题不会让你太困惑。这就是我想要的:
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 =
如何让这段代码生效?
答案 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;
为简单起见,您应该创建反向字典并从那里查找值,因为值可能会发生冲突。