@דוד ל.ט.
במילים אחרות, אם היינו רוצים שהפונקציה לא תופעל עד שיהיה בה צורך היינו צריכים להעביר אותה כפונקציה ולא כסטרינג. תוכל לממש שוב את הפונקציה Replace ולשנות/להוסיף/להעמיס בחתימתה קבלת פונקציה (למשל הטיפוס Func<String>)
mat הביא אותי לבדוק שוב את דברי, ואכן יש בדיוק כזו פונקציה אבל לא בסטרינג כי אם בREGEX, הפונקציה נראית ככה:
Regex.Replace (text, find, m => MyStr(m.Value));
כאשר MyStr מקבלת ארגומנט סטרינג אחד ומחזירה את סטרינג בהתאם.
במקרה של mat יש לו מראש את הערכים ואז זה מתבצע בפשטות ע"י מילון:
var dic = new Dictionary<string, string>();
dic["name1"] = "value1";
dic["name2"] = "value2";
dic["name3"] = "value3";
dic["name4"] = "value4";
Regex.Replace (text, find, m => dic[m.Value]);
אבל אם הבנתי את שאלתך, מילון לא יעזור כי אתה רוצה לחסוך בתשאול ערכים שאולי לא יידרשו.
לכן אתה צריך לבדוק את הערכים במהלך הפונקציה.
פורסם במקור בפורום CODE613 ב22/01/2015 15:39 (+02:00)