1

我有一个Dictionary存储在其中的键值对。我的问题是,在我的字典中,键名的开头有一个空格,因此用于访问该值:

        Pair[" Key"];

有没有什么方法可以删除起始空格,所以我可以访问像这样的值

        Pair["Key"]
4

3 回答 3

8

如果您有,则可以使用( MSDNstring )删除前导和尾随空格。key.Trim()

如果要修剪字典中的所有键,可以这样做:

dictionary = dictionary.ToDictionary(x => x.Key.Trim(), x => x.Value);

但是,如果您有 2 个将修剪为相同值的键,则这有失败的余地。例如,有一个带有键“key”和“key”的字典是有效的,但是如果你将它们全部修剪,你会得到一个,ArgumentException因为你会尝试两次添加相同的键(“key”)。

于 2012-07-14T13:53:15.997 回答
2

修剪你的字符串就足够了。除此之外,您还可以为您的字典编写一个自定义键比较器,而不是每次向字典添加或从字典中获取内容时修剪字符串。

Dictionary<string, int> dict = new Dictionary<string, int>(new Comparer());
dict.Add("aa ", 10);
int i = dict[" aa"];

public class Comparer : IEqualityComparer<string>
{
    public bool Equals(string x, string y)
    {
        return x.Trim().Equals(y.Trim());
    }

    public int GetHashCode(string obj)
    {
        return obj.Trim().GetHashCode();
    }
 }
于 2012-07-14T14:06:23.877 回答
1

使用string.Trim方法:

var key = " Key".Trim();
Pair[key];
于 2012-07-14T13:52:42.100 回答