从Hashtable中替换字符串中的字符的最佳方法?

时间:2010-10-27 07:44:17

标签: c# string replace

我有一个获取字符串和Hashtable的方法...哈希包含要在键中替换的char以及值作为值的值。什么是检查哈希并替换字符串中的字符的最佳方法?

谢谢:)

3 个答案:

答案 0 :(得分:3)

foreach(var pair in hash)
{
    mystring = mystring.Replace(pair.Key, pair.Value);
}

如果它确实是Hashtable而不是Dictionary<char, char>,那么您可能需要将键和值转换为正确的类型。

或者,根据字典中的项目数和字符串的大小,迭代字符串可能会更快:

StringBuilder sb = new StringBuilder();
foreach (var char in mystring)
{
    char replace;
    if (hash.TryGetValue(char, out replace))
    {
        sb.Append(replace);
    }
    else
    {
        sb.Append(char);
    }
}

答案 1 :(得分:1)

您应该遍历字符串并使用当前字符来从哈希表中获取替换值。这将给你O(n)速度。

答案 2 :(得分:0)

什么是lambda表达式?

var t = new Dictionary<char, char>();
t.Add('T', 'B');
var s = "Test";
s = string.Concat(s.Select(c => { return t.ContainsKey(c) ? t[c] : c ; }));
Console.WriteLine(s);

避免双重查找:

var t = new Dictionary<char, char>();
t.Add('T', 'B');
var s = "Test";
s = string.Concat(s.Select(c => 
    {
        char r;
        if(t.TryGetValue(c, out r))
            return r;
        else
            return c; 
    }));