如何改变字典中KeyPairValue的值?
How to change the value of KeyPairValue in dictionary?
我在 xml 中有这样的 KeyValuePair:
<list_pair key="WorkMode">
<str_pair key="1" value="&1 Ready" />
<str_pair key="2" value="&2 Not ready" />
</list_pair>
我可以将它们添加到字典中:
foreach (XmlNode wmNode in wmNodeList)
wmDictionary.Add(wmNode.Attributes["key"].Value, wmNode.Attributes["value"].Value);
因为我想在我的应用程序界面的菜单中很好地显示该值,所以我想更改要显示的值。例如,我想将值“& 1 Ready”更改为“1 Ready”。那么,我该如何做这些改变呢?这是我到目前为止所做的:
foreach(var key in wmDictionary.Keys)
{
switch (key)
{
//How to do the changes?
}
}
请帮忙。
如果您只是想删除与号,则可以将其作为 LINQ 查询的一部分。
foreach (XmlNode wmNode in wmNodeList)
wmDictionary.Add(wmNode.Attributes["key"].Value,
wmNode.Attributes["value"].Value.ToString().Replace("&", "").Trim());
为什么需要切换?喜欢关注-
foreach(var key in wmDictionary.Keys)
{
wmDictionary[key] = "do whatever operation you want to do";
}
所以我的理解是你想从菜单选项中删除你的“&”,这是你可以使用的代码示例,我只是将它输入记事本并粘贴到这里给你一个想法,
foreach(var key in wmDictionary.Keys)
{
switch (key)
{
string originalVal = wmDictionary[key].Value;
string newVal = originalVal.replace("&","");
wmDictionary[key] = newVal
}
}
不要修改 foreach
中的集合阅读 this and this
做这样的事情:
private string ModifyKey(string key){
return key.Replace("&","");
}
并在将其添加到字典之前对其进行修改
foreach (XmlNode wmNode in wmNodeList){
wmDictionary.Add(ModifyKey(wmNode.Attributes["key"].Value), wmNode.Attributes["value"].Value);
}
为什么不在填充字典时简单地使用 string.Replace
或 string.TrimStart
?
wmNode.Attributes["value"].Value.Replace("&", "");
首先,当你想修改值时,你不应该打开键。此外,您根本不应该切换:更好的方法是设置带有翻译的地图,并使用它来查找翻译后的值,如下所示:
// This dictionary can be defined on the class
// as a private static readonly member.
var translations = new Dictionary<string,string> {
{"original1", ""translation1}
, {"original2", "translation2"}
};
foreach(var kvp in wmDictionary) {
string translated;
if(!translations.TryGetValue(kvp.Value, out translated)){
translated=kvp.Value;
}
Console.WriteLine("Key={0} Translated value={1}", kvp.Key, translated);
}
var dic = new Dictionary<string, string>();
dic.Keys.ToList().ForEach(dd => dic[dd] = dic[dd].Replace("&", ""));
我在 xml 中有这样的 KeyValuePair:
<list_pair key="WorkMode">
<str_pair key="1" value="&1 Ready" />
<str_pair key="2" value="&2 Not ready" />
</list_pair>
我可以将它们添加到字典中:
foreach (XmlNode wmNode in wmNodeList)
wmDictionary.Add(wmNode.Attributes["key"].Value, wmNode.Attributes["value"].Value);
因为我想在我的应用程序界面的菜单中很好地显示该值,所以我想更改要显示的值。例如,我想将值“& 1 Ready”更改为“1 Ready”。那么,我该如何做这些改变呢?这是我到目前为止所做的:
foreach(var key in wmDictionary.Keys)
{
switch (key)
{
//How to do the changes?
}
}
请帮忙。
如果您只是想删除与号,则可以将其作为 LINQ 查询的一部分。
foreach (XmlNode wmNode in wmNodeList)
wmDictionary.Add(wmNode.Attributes["key"].Value,
wmNode.Attributes["value"].Value.ToString().Replace("&", "").Trim());
为什么需要切换?喜欢关注-
foreach(var key in wmDictionary.Keys)
{
wmDictionary[key] = "do whatever operation you want to do";
}
所以我的理解是你想从菜单选项中删除你的“&”,这是你可以使用的代码示例,我只是将它输入记事本并粘贴到这里给你一个想法,
foreach(var key in wmDictionary.Keys)
{
switch (key)
{
string originalVal = wmDictionary[key].Value;
string newVal = originalVal.replace("&","");
wmDictionary[key] = newVal
}
}
不要修改 foreach
中的集合阅读 this and this
做这样的事情:
private string ModifyKey(string key){
return key.Replace("&","");
}
并在将其添加到字典之前对其进行修改
foreach (XmlNode wmNode in wmNodeList){
wmDictionary.Add(ModifyKey(wmNode.Attributes["key"].Value), wmNode.Attributes["value"].Value);
}
为什么不在填充字典时简单地使用 string.Replace
或 string.TrimStart
?
wmNode.Attributes["value"].Value.Replace("&", "");
首先,当你想修改值时,你不应该打开键。此外,您根本不应该切换:更好的方法是设置带有翻译的地图,并使用它来查找翻译后的值,如下所示:
// This dictionary can be defined on the class
// as a private static readonly member.
var translations = new Dictionary<string,string> {
{"original1", ""translation1}
, {"original2", "translation2"}
};
foreach(var kvp in wmDictionary) {
string translated;
if(!translations.TryGetValue(kvp.Value, out translated)){
translated=kvp.Value;
}
Console.WriteLine("Key={0} Translated value={1}", kvp.Key, translated);
}
var dic = new Dictionary<string, string>();
dic.Keys.ToList().ForEach(dd => dic[dd] = dic[dd].Replace("&", ""));