我的字典在c# wp应用程序

本文关键字:wp 应用程序 字典 我的 | 更新日期: 2023-09-27 18:06:31

我想在写单词的时候经常…再重复一次

这样的:textbox1 "France - Jordan - France"…给我看"巴黎-安曼-巴黎"

但是在这段代码中只显示了一次"Paris - Amman"

    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;
        }
    }

我的字典在c# wp应用程序

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

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的答案那样。但是如果你的字典不是很大,它应该不会产生任何明显的差异(最多几毫秒)。

对于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"))
    {

发生的是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.
    }
}