我有一些现有的文字,我需要用替换文本替换。要使用的替换文本取决于现有文本。这是一个简单的翻译表,显示了我的问题:
,'A', ==> ,'Fred', ,'B', ==> ,'Mary', ... and so on...
匹配原始文本很容易。我遇到问题的部分是替换文本。如您所见,替换文字取决于匹配的文字:如果找到,'A',
,我需要将其替换为,'Fred',
。基本上,我似乎需要一个转换表机制。
我正在使用.NET RegEx类。
我理解在替换文本中捕获匹配并重新使用它们,但我认为不会这样做。有什么建议吗?
答案 0 :(得分:1)
由于您使用的是.NET,因此有两种方法:
多次替换:
string.Replace("A", "Fred");
string.Replace("B", "Mary");
// ... (could use regex based replacement if necessary)
将MatchEvaluator
代表传递给Regex.Replace
代替替换字符串:
Regex.Replace(input, matchRegexString, match => {
// Code that takes a System.Text.RegularExpressions.Match and returns a string
});
并且委托的返回用作替换文本。 (还有一个非静态版本,您可以在其中创建Regex
实例。)过去,我已经完成此操作,以便在字典中循环的输入中基于%key%
执行替换。 / p>
答案 1 :(得分:0)
我认为,没有多次替换和没有委托/子程序的唯一方法是,只有在主题字符串中替换字符串已经存在“稍后”时才会起作用。
替换它:
,'A',(?=.*(Fred))|,'B',(?=.*(Mary))
有了这个:
,'$1$2',
是的,这是一个相当愚蠢的伎俩。投票@Richard为愚蠢道歉。