02. august 2008 - 21:35Der er
7 kommentarer og 1 løsning
Regex replace
Hej eksperter,
Jeg har en tekst fra et CMS system:
string text = "Lorem ipsum dolor {currency} sit amet, consectetuer adipiscing elit. Quisque et sem {language} ullamcorper est consequat porta.";
Bemærk de to placeholders der er placeret i teksten i form af tuborgklammer.
Jeg vil gerne i en meget elegant løsning for hver match af en sådan placeholder udskifte indholdet med string Content.Get(string key) sådan at de rigtige værdier indsættes ud fra nogle kriterier som denne metode tester for.
using System; using System.Collections.Generic; using System.Text.RegularExpressions;
namespace E { public class Program { public static string XReplace(string s, Dictionary<string, string> rpl) { string res = s; Regex re = new Regex("{([^}]+)}", RegexOptions.Compiled); foreach(Match m in re.Matches(s)) { res = res.Replace(m.Groups[0].Value, rpl[m.Groups[1].Value]); } return res; } public static void Main(string[] args) { string text = "Lorem ipsum dolor {currency} sit amet, consectetuer adipiscing elit. Quisque et sem {language} ullamcorper est consequat porta."; Dictionary<string, string> rpl = new Dictionary<string, string>(); rpl.Add("currency", "DKK"); rpl.Add("language", "Danish"); rpl.Add("foo", "bar"); Console.WriteLine(text); Console.WriteLine(XReplace(text, rpl)); Console.ReadKey(); } } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.