我有一个方法可以获取一个字符串和一个哈希表...散列包含键中要替换的字符和取而代之的值。检查散列和替换字符串中的字符的最好方法是什么?
谢谢:)
发布于 2010-10-27 15:48:16
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);
}
}发布于 2010-10-27 15:48:18
您应该遍历字符串并使用current char从哈希表中获取替换值。这将为您提供O(n)速度。
发布于 2010-10-27 16:04:41
关于一个小的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;
}));https://stackoverflow.com/questions/4030946
复制相似问题