2013-05-01 66 views
0

假設我有用於編寫難以輸入的符號的簡寫符號。例如,編寫a'將代表á。我可以做正則表達式來把這些,比如一個整個序列:用另一個列表中的相應成員替換列表中的項目

a' --> á 
e' --> é 
i' --> í 
o' --> ó 
u' --> ú 

但我寧願是一個單一的正則表達式來處理各種情況:

[aeiou]' --> [áéíóú] 

在其他字,當正則表達式解析器使用集合aeiou的第n個成員找到匹配項時,它使用集合áéíóú的第n個成員進行替換。

有沒有辦法使用C#提供的正則表達式的風格來做到這一點?

編輯:只是爲了說清楚,我正在尋找這樣做正則表達式內的一種方式。我正在使用的程序已經允許用戶在運行程序時訪問正則表達式,所以如果這可以用一個正則表達式來完成,它會爲很多人節省很多時間。這些用戶做不是有權訪問C#源代碼。

+1

爲什麼不使用'Dictionary '?然後,當你做'符號[「a'」]'時,它會給你'' – 2013-05-01 20:50:10

+0

因爲這是一個允許用戶爲他們的特定任務編寫正則表達式的程序。如果可以用正則表達式完成,用戶不需要訪問代碼。 – Joe 2013-05-01 20:52:43

+0

我也想知道這個的答案 – Jonesopolis 2013-05-01 20:55:06

回答

2

這裏有一個天真的方法:

string[] old = new string[]{ "a'", "e'", "i'", "o'", "u'" }; 
string[] new = new string[]{ "á","é","í","ó","ú" }; 

for (int i=0; i++; i<5) 
{ 
    input = Regex.Replace(input, old[index], new[index]); 
} 
+0

這並沒有回答這個問題 - 我正在尋找一種在正則表達式中執行此操作的方法,而不是在它之外。 – Joe 2013-05-01 20:58:31

+0

我看,檢查出這個參考然後爲條件正則表達式:http://msdn.microsoft.com/en-us/library/az24scfc.aspx#alternation_constructs – Meep 2013-05-01 21:15:40

+0

對於誤解:)抱歉。 – Meep 2013-05-01 21:18:46

相關問題