我在c#中的词典wp app

时间:2015-08-06 02:11:53

标签: c# dictionary windows-phone-8.1

我想在经常写这个词时再次重复

像这样: textbox1"法国 - 约旦 - 法国" ... 并告诉我"巴黎 - 安曼 - 巴黎"

但在此代码中只显示了一次"巴黎 - 安曼"

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Dictionary<string, string> dictionary = new Dictionary<string, string>();

        dictionary.Add("France", "Paris");
        dictionary.Add("England", "London");
        dictionary.Add("Jordan", "Amman");

        textbox2.Text = "";
        if (textbox1.Text.Contains("France"))
        {
            string value = dictionary["France"];
            textbox2.Text += value;
        }

        if (textbox1.Text.Contains("England"))
        {
            string value = dictionary["England"];
            textbox2.Text += value;
        }

        if (textbox1.Text.Contains("Jordan"))
        {
            string value = dictionary["Jordan"];
            textbox2.Text += value;
        }
    }

3 个答案:

答案 0 :(得分:1)

如果您的字典很小(少于几百个元素),您可以复制字符串,然后替换所有出现的字符:

private void Button_Click(object sender, RoutedEventArgs e)
{
    Dictionary<string, string> dictionary = new Dictionary<string, string>();

    dictionary.Add("France", "Paris");
    dictionary.Add("England", "London");
    dictionary.Add("Jordan", "Amman");

    var result = textbox1.Text;

    foreach (var entry in dictionary)
    {
        result.Replace(entry.Key, entry.Value);
    }

    textbox2.Text = result;
}

此解决方案的好处在于您保留原始字符串的确切格式。例如,如果您的输入为***France***, $$$Jordan$$$,则您的输出将为***Paris***, $$$Amman$$$。缺点是它执行速度比目标搜索慢,就像Joel Legaspi Enriquez的回答一样。但是如果你的字典不大,它应该没有任何明显的差异(几毫秒的顶部)。

答案 1 :(得分:0)

Text.Contains()只报告它是否包含该文本,它不会计算它有多少次出现。您可以尝试拆分字符串(如果您有任何可用作拆分器的特定字符或字符串,例如-,则计算您有多少次出现,然后循环并重建结果。

或者您可以使用它来计算字符串中出现的次数(但这特定于您要查找的键):

string text = "France - France - France";
int count = System.Text.RegularExpressions.Regex.Matches(text, "France").Count; 

使用Split()然后循环提到的简单方法是:

string[] values = textbox1.Text.Split(new string[] { " - " }, StringSplitOptions.None);
foreach( string value in values)
{
    if(dictionary.ContainsKey(value))
    {
        textbox2.Text += dictionary[value];
        textbox2.Text += " - "; //Mind that you need to remove this on your last element.
    }
}

答案 2 :(得分:0)

对于France - Jordan - France您需要显示Paris - Amman - Paris;所以你的代码应该是

    if (textbox1.Text.Contains("France"))
    {
        string value = dictionary["France"];
        textbox2.Text += value;
    }

    if (textbox1.Text.Contains("Jordan"))
    {
        string value = dictionary["Jordan"];
        textbox2.Text += value;
    }

    if (textbox1.Text.Contains("France"))
    {
        string value = dictionary["France"];
        textbox2.Text += value;
    }

由于上述字符串不包含单词if

,因此false下面的条件为England
    if (textbox1.Text.Contains("England"))
    {