簡體   English   中英

每次用不同的字符串替換相同的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM