2013-05-01 73 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