[英]Replace same string with different one every time
我有一個字符串,在不同的地方包含相同的值。 例如:
薩拉姆。 Men yaxsiam sen necesen? Sen ne vaxt geleceksen? Senoralarda ne edirsen?
如何更改此字符串,如下所示?
薩拉姆。 Men yaxsiam sen1 necesen? Sen2 ne vaxt geleceksen? Sen3oralarda ne edirsen?
PS我搜索了但找不到任何來源。
我還嘗試了string.Replace()
、 StringBuilder.Replace()
、 Regex.Replace()
方法。 但沒有達到結果。
您確實可以為此使用Regex.Replace
。 您可以將重載與MatchEvaluator
( Regex.Replace(string input, string pattern, MatchEvaluator evaluator)
) 一起使用。 此方法將與指定正則表達式匹配的所有字符串替換為MatchEvaluator委托返回的字符串。 例如:
int i = 0;
string s = "Salam. Men yaxsiyam sen necesen? Sen ne vaxt geleceksen? Sen oralarda ne edirsen?";
Console.WriteLine(Regex.Replace(s, "(?i)sen", match => match.Value + i++));
輸出:
薩拉姆。 Men yaxsiam sen0 necesen1? Sen2 ne vaxt geleceksen3? Sen4 orarda ne edirsen5?
但這只是一個例子。 你可以做更多。
編輯:
這個正則表達式( \\s(?i)sen(?=\\s)
)以 1 開始i
將給出與您想要的完全相同的結果。
Regex.Replace
將完成這項工作,如果您只想匹配完整的單詞,您可以使用組。
var str = "Salam. Men yaxsiyam sen necesen? Sen ne vaxt geleceksen? Sen oralarda ne edirsen?";
int indexer = 0;
var str2 = Regex.Replace(str, @"(?<pre>[^\w])(?<content>sen)(?<post>[^\w])", m => m.Groups["pre"].Value + m.Groups["content"].Value + (indexer++) + m.Groups["post"].Value, RegexOptions.IgnoreCase);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.