我有一个获取字符串和Hashtable的方法...哈希包含要在键中替换的char以及值作为值的值。什么是检查哈希并替换字符串中的字符的最佳方法?
谢谢:)
答案 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;
}));