好吧,我有一個非常明顯的但顯然是非平凡的問題來解決。如何獨家更換?
假設我有一個簡單的字符串ab
。
現在我想用b
和b
替換a
和a
,所以我最終以ba
結束。
解決方案的手將是連續做兩個替換。但根據訂單的不同,結果可能是aa
或bb
。
顯然,生產情況將不得不處理比兩個更復雜的字符串和更多的替換,但問題仍然適用。
我有一個想法是保存我替換的東西的位置。但是,只要替換件的長度不同於原始針的長度,就會使我退出。
這是一般性問題,但我正在使用C#。以下是我想出的一些代碼:
string original = "abc";
Regex[] expressions = new Regex[]
{
new Regex("a"), //replaced by ab
new Regex("b") //replaced by c
};
string[] replacements = new string[]
{
"ab",
"c"
};
for (int i = 0; i < expressions.Length; i++)
original = expressions[i].Replace(original, replacements[i]);
//Expected result: abcc
//Actual result: accc <- the b is replaced by c in the second pass.
那麼有沒有一種簡單的方法來解決這個問題?
如果替換工作時,你有超過2個字符? –
我們可以看到一些代碼嗎? –
如果您的替代品只有單個字符(包括什麼被替換以及替換爲什麼),這是一種單通道算法 - 對於每個輸入字符,如果需要替換,輸出替換,否則只輸出字符。可能最容易建立一個簡單的替換表來引用,除非你只替換了幾個字符... – twalberg