2015-11-15 66 views
-2

相同字符串及時更換字符串。例如:同一個每次我有一個包含在不同的地方

香腸。男子yaxsiya仙而neces?你要來vaxtı什麼?你在那裏舀什麼?

我怎樣才能改變這個字符串像下面?

香腸。男人yaxsiya我SEN1 neces? SEN2vaxtı你來嗎?雖然有SEN3什麼?

P. S.我搜查,但找不到任何來源。我也試過

string.Replace()StringBuilder.Replace(),方法和Regex.Replace()。但沒有造成到到達。你的確可以

+0

你能後你試過的代碼? –

+0

什麼是你的模式是什麼呢?你想獲得只有CONCAT You'''1'或者'You'以數字開頭? ''You' You'等什麼呢? –

+0

@empereurai軸承我想這樣做的代碼,是完全錯誤的。這就是爲什麼我不想分享。但我張貼哪些方法與我試過了。所有的方法和 –

回答

2

Regex.Replace此用戶。您可以使用overloadMatchEvaluatorRegex.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++)); 

輸出:

香腸。男子yaxsiya我SEN0 necesen1? SEN2vaxtıgeleceksen3什麼?什麼edirsen5 Sen4呢?

但是,這僅僅是一個例子。你可以做的更多。
編輯:這
正則表達式(\s(?i)sen(?=\s))與i從1開始將正好給你想要的結果相同。

+0

@Downvot它,你會介意解釋爲什麼呢? –

+0

'geleceksen'不應該被更換。 – Eser

+0

有什麼' 「(我)你」'?你能解釋一下嗎? –

1

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); 
相關問題