using System.Text.RegularExpressions; namespace zero.Utils; public class TokenReplacement { static Regex TokenRegex; static TokenReplacement() { TokenRegex = new Regex("{([\\w-_.]+)}", RegexOptions.IgnoreCase); } public static string Apply(string text, Dictionary tokens) { if (text.IsNullOrWhiteSpace()) { return text; } MatchCollection matches = TokenRegex.Matches(text); foreach (Match match in matches) { if (!match.Success) { continue; } string original = match.Value; string token = match.Groups[1].Value; if (tokens.ContainsKey(token)) { text = text.Replace(original, tokens[token]); } } return text; //foreach ((string key, string value) in tokens) //{ // string tokenKey = key.EnsureStartsWith(BEGIN).EnsureEndsWith(END); // string tokenValue = value; // TODO escape for HTML? // text = text.Replace(tokenKey, value); //} //return text; } }