我必须替换字符串中的多个子字符串(输入字符串的最大长度为 32)。我有一本大字典,其中可以包含数百万个项目作为键值对。我需要检查每个单词是否存在于字典中,并替换为相应的值(如果存在于字典中)。输入字符串可以有多个尾随空格。
该方法被调用了数百万次,因此,它严重影响了性能。
代码中是否有任何优化范围或其他更好的方法来做到这一点。
public static string RandomValueCompositeField(object objInput, Dictionary<string, string> g_rawValueRandomValueMapping) {
if (objInput == null)
return null;
string input = objInput.ToString();
if (input == "")
return input;
//List<string> ls = new List<string>();
int count = WhiteSpaceAtEnd(input);
foreach (string data in input.Substring(0, input.Length - count).Split(' ')) {
try {
string value;
gs_dictRawValueRandomValueMapping.TryGetValue(data, out value);
if (value != null) {
//ls.Add(value.TrimEnd());
input = input.Replace(data, value);
}
else {
//ls.Add(data);
}
}
catch(Exception ex) {
}
}
//if (count > 0)
// input = input + new string(' ', count);
//ls.Add(new string(' ', count));
return input;
}
编辑:
我在问题中遗漏了一件重要的事情。子字符串在输入字符串中只能出现一次。字典键和值具有相同数量的字符。
杨魅力
相关分类