let's have text such this:
[myappterms.termname1]. [myappterms.termname2]. 1- [myappterms.termnamex] 2- ...
i want replace every occurrence of [myappterms.whatever] result of readterm( "myappterms.whatever" ), readterm static function receives term name , returns term text current language.
is feasible using regex.replace? (alternatives welcome). i'm looking substitution groups i'm not sure if can use functions them.
use regex.replace(string, matchevaluator) overload.
static void main() { string input = "[myappterms.termname1]. [myappterms.termname2]. 1- [myappterms.termnamex] 2"; regex regex = new regex(@"\[myappterms\.([^\]]+)\]"); string output = regex.replace(input, new matchevaluator(regexreadterm)); console.writeline(output); } static string regexreadterm(match m) { // term name captured in first group return readterm(m.groups[1].value); } the pattern \[myappterms\.([^\]]+)\] matches [myappterms.xxx] tags , captures xxx in capture group. group retrieved in matchevaluator delegate , passed actual readterm method.
it's better lambda expressions (since c# 3.0):
static void main() { string input = "[myappterms.termname1]. [myappterms.termname2]. 1- [myappterms.termnamex] 2"; regex regex = new regex(@"\[myappterms\.([^\]]+)\]"); string output = regex.replace(input, m => readterm(m.groups[1].value)); console.writeline(output); } here, define evaluator straight inside code uses (keeping logically connected pieces of code together) while compiler takes care of constructing matchevaluator delegate.
Comments
Post a Comment