[英]Replace String characters
我有一個弦
"#1#+#2#+#3#*1.23+#4#/2+#5#"
我有一個對象列表
我需要一個新字符串,其中#1#替換為“ ABC”,#2#替換為DEF等。
所需的字符串:
"ABC+DEF+GHI*1.23+JKL/2+MNO"
如何使替換有效執行?
編輯:當前,我正在循環為列表中的每個,並為字符串使用替換,但我認為它不是非常節省內存。 一定會有更好的辦法。
如果性能不是一個大問題,則可能要使用正則表達式:
string input = "#1#+#2#+#3#*1.23+#4#/2+#5#";
var replaces = new List<string> { "ABC", "DEF", "GHI", "JKL", "MNO" };
string result = Regex.Replace(input, "#[0-9]+#", match =>
{
string number = match.Value.Substring(1, match.Value.Length - 2);
int index = int.Parse(number) - 1;
return replaces[index];
});
即使“#”之間的數字也有效:
“#”之間的數字N必須與replaces
列表中的第(N-1)個索引相對應。 您可能要添加一些錯誤處理。
從數據庫中讀取此行。 閱讀它並更改{或}的#號。 如果是第一個#,則{,如果它是第二個},依此類推。 然后結果將類似於下面的文本變量;)
string text = "{0}+{1}+{2}*1.23+{3}/2+{4}";
你有一個數組:
string[] replaces = {"ABC",
"DEF",
"GHI",
"JKL",
"MNO"};
你可以做這樣的事情:
string result = string.Format(text, replaces);
兩個答案:
string.Replace(...)
方法。 但是在長字符串替換很多的情況下,它會很慢。 StringBuilder.ToString()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.