我的字典在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;
}
}
如果你的字典很小(少于几百个元素),你可以复制你的字符串,然后替换所有出现的:
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.
}
}