我有一個MyObj的靜態列表,它是從json文件動態填充的。C#列出輸入字符串的替換值 - 最快的方法
public class MyObj
{
public string OriginalValue { get; set; } = "";
public string ReplacementValue { get; set; } = "";
}
爲了解決這個問題,我將使用foo值填充列表。
public static List<MyObj> ReplacementValues = new MyObj[]
{
new MyObj() { OriginalValue = "{a}", ReplacementValue = "Queen" },
new MyObj() { OriginalValue = "{m}", ReplacementValue = "Cersei" },
new MyObj() { OriginalValue = "{s1}", ReplacementValue = "Khaleesi" },
new MyObj() { OriginalValue = "{p}", ReplacementValue = "Harry" },
...
new MyObj() { OriginalValue = "{_2_29sa}", ReplacementValue = "229Z" }
}.ToList();
然後我有一個輸入的字符串(可以是任何東西真的,同{X}值的倍數,30X倍):
var inputstring = "The Khal is looking for a {a}, her name must not be {m}. He found one called {s1}. {p} Potter {p}{p}{p}{p}{p}{p}";
以什麼方式我可以迅速通過迭代值,用替換值替換字符串中的值。
我可以做一個foreach
循環與indexOf
的等,並遍歷靜態列表,但列表可能會相當大,可以說15000條目大。我知道這聽起來不是很多,但替換應該接近實時,如果輸入字符串中有相同值的400倍,可能會通過15k列表循環很多次。
是否有更快的lambda或正則表達式快速替換字符串中的值與查找列表中的值?
什麼[與string.replace()](https://msdn.microsoft.com/en-us/library/fk49wtc1( v = vs.110)的.aspx)?這將需要通過每個替代,但黨會很容易! – itsme86
那麼循環一次大列表,併爲每個條目使用string.Replace? – Pierre
考慮使用Dictionary(或Dictionary ,其中鍵是原始值(假設它們是唯一的)並且該值是替換字符串(或該鍵所屬的MyObj實例))。沒有必要迭代集合,而是可以使用:myDict [key] .Value(或myDict [key] .Value.ReplacementValue;) –
CodexNZ