我想在经常写这个词时再次重复
像这样: 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;
}
}
答案 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"))
{