【发布时间】:2020-12-29 14:34:34
【问题描述】:
我试图将一个字符串拆分为一个字符(我已经完成了一半)并使用每个字符将它与我的充满随机字符串的字典进行比较,然后将字典中的字符值添加到完成的字符串中。问题在于它的输出 - 字符不按顺序排列。
例如:用户输入:“你好”---
例如:控制台:“e”-“l”-“l”-“o”-“h”
多数情况下就是这样。关于如何让它在控制台中正确拼写的任何答案?
代码:
private void complete_text_Click(object sender, RoutedEventArgs e)
{
end_result = input_box.Text.ToString();
string end_translated_result = "";
for (int i = 0; i < ZENOX_LANGUAGE.Keys.Count; i ++)
{
foreach (char iq in end_result.ToCharArray())
{
if (iq.ToString().ToLower() == ZENOX_LANGUAGE.Keys.ElementAt(i).ToString().ToLower())
{
Console.WriteLine(iq);
end_translated_result += ZENOX_LANGUAGE.Values.ElementAt(i) + " ";
//Console.WriteLine("sender: " + sender.ToString() + " c: " + end_result[iq].ToString().ToLower() + " s:" + ZENOX_LANGUAGE.Keys.ElementAt(i));
Console.WriteLine("end translated result: " + end_result);
}
}
}
}
【问题讨论】:
-
@RyanWilson 非常奇怪,哈哈:pastebin.pl/view/1801bd19
-
我必须查一下,但我想我记得
Dictionary不会总是按照它们的存储顺序返回值对,因为它使用哈希,你可以使用OrderedDictionary或List<T>或KeyValuePair或在Dictionary上致电Enumerable.OrderBy,如果您需要精确的订单。您可以在此相关帖子中阅读更多信息 (stackoverflow.com/questions/13998185/…) -
翻转循环内/外,然后查找
ZENOX_LANGUAGE[iq]。并且不要使用ToLower(),使用Equals()和StringComparison -
@RyanWilson 字典不是我所知道的问题 - 它将
end_result拆分并将其吐到控制台中。 -
@deadgunner 你确定吗?您是否逐步完成了
Dictionary的迭代并确保它按顺序返回每个项目?您也可以使用传统的for循环迭代字符串,因为字符串是char的数组
标签: c# string visual-studio dictionary