【发布时间】:2014-07-12 21:36:08
【问题描述】:
编辑:我不觉得这是重复的——我确实没有清楚地说明我想知道一种有效的方法来将字符填充到我的字典值的左侧。我标记为答案的问题应该澄清,因为它与其他线程中的答案非常不同。对不起,我措辞错误。
我正在尝试验证我的字典中的所有值是否都具有一定的长度,如果不是,则在左侧用“0”填充它们。我知道问题是“什么”,我正在阅读字典的 KVP,然后对其进行修改,这当然会引发异常,但我不确定如何修改我的代码以使其“合法”
class prefixMe
{
Dictionary<string, string> d = new Dictionary<string, string>();
public prefixMe()
{
d.Add("one", "123456");
d.Add("two", "678");
d.Add("three", "13");
foreach(KeyValuePair<string,string> k in d)
{
StringBuilder sb = new StringBuilder(k.Value);
while(sb.Length != 10)
{
Console.WriteLine("Key:{0}\tValue:{1}", k.Key, sb);
sb.Insert(0, '0');
}
d[k.Key] = sb.ToString();
//k.Value.Replace(k.Value, sb.ToString());// = sb.ToString();
Console.WriteLine("Key:{0}\tNew Value:{1}", k.Key, d[k.Key]);
break;
}
}
}
休息;阻止代码抛出错误,但也使得它不会通过其他值,因为它打破了 foreach 循环。
结果应该是:
0000123456
0000000678
0000000013
【问题讨论】:
-
您可以通过添加到列表的辅助函数来避免该问题:
void add(string key, string val) {d.Add(key, val.PadLeft(10, '0'));}
标签: c# dictionary