c# - How to replace a string in this case? -



c# - How to replace a string in this case? -

i'm implementing filter.

i store filter criteria in list of string. e.g. list filters

a filter logic string e.g.

string filterlogic = "(1 , 2) or 3";

now want replace numbers filter criteria, e.g.

(filters[1] , filters[2]) or filters[3])

//stores filter criterias list<string> filters = new list<string>(); (int = 1; <= controlgroupid;i++ ) { stringbuilder sb = new stringbuilder(); string fieldsdropdownid="dlfields"+i; dropdownlist dlfields = (dropdownlist)this.findcontrol(fieldsdropdownid); sb.append(dlfields.selectedvalue); string operatordropdownid = "dloperator" + i; dropdownlist dloperator = (dropdownlist)this.findcontrol(operatordropdownid); string operatorvalue = dloperator.selectedvalue; string valuetxbid = "txb" + i; textbox tb = (textbox)this.findcontrol(valuetxbid); string textboxvalue = tb.text; switch (operatorvalue) { case "=": sb.append("="); sb.append(textboxvalue); break; case "<>": sb.append("<>"); sb.append(textboxvalue); break; case "<": sb.append("<"); sb.append(textboxvalue); break; case ">": sb.append(">"); sb.append(textboxvalue); break; case ">=": sb.append(">="); sb.append(textboxvalue); break; case "<=": sb.append("<="); sb.append(textboxvalue); break; case "contains": sb.append(" "); sb.append("'%"); sb.append(textboxvalue); sb.append("%'"); break; case "does not contain": sb.append(" not "); sb.append("'%"); sb.append(textboxvalue); sb.append("%'"); break; case "starts with": sb.append(" "); sb.append("'"); sb.append(textboxvalue); sb.append("%'"); break; } filters.add(sb.tostring()); }

update:

list<string> l = new list<string>(); (int = 1; < 12; i++) { string s="hello"+i; l.add(s); } string ss = "(1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11)"; regex rgx = new regex(@"\d+"); ss=rgx.replace(ss, "l[$0]");

this gives me : "(l[1] , l[2] , l[3] , l[4] , l[5] , l[6] , l[7] , l[8] , l[9] , l[10] , l[11])"

what want is: (hello1 , hello2 , hello3 , hello4 , hello5 , hello6 , hello7 , hello8 , hello9 , hello10 , hello11)";

given integers indices, 1 can following:

regex rgx = new regex (@"\d+"); rgx.replace(fitlerlogic, "filters[$0]");

then result is:

"filters[1] , filters[2]) or filters[3]"

but only works if integers should replaced filter indices.

you made way typo: it's filterlogic, not fitlerlogic.

edit: or if want substitute real value, can utilize lambda-expression:

object[] filter = new object[] {false,true,false,true};//not array 0-indexed regex rgx = new regex (@"\d+"); rgx.replace (fitlerlogic,x => filter[int.parse(x.value)].tostring());

in case result is:

"(true , false) or true"

if wish evaluate expression, take compiler-compilers , context-free grammars.

c# regex string

Comments

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -