tobrukdk skrev:Hej igen. Men lad også sige, at der er en masse contenttext indhold fx
Kode: Vælg alt
<p>hej hej hej</p>
<p>hej hej hej</p>
<p>hej hej hej</p>
<p>hej hej hej</p>
<p>{{video}}</p>
<p>hej hej hej</p>
<p>hej hej hej</p>
<p>hej hej hej</p>
<p>{{alert}}</p>
Så, at den kun skal tag de to punkt med det tag på sig?
Jeg forstår ikke helt hvad du mener. Vil du eksplicit fortælle den hvilke tags den skal erstatte, eller bare lade den slå de tags op i databasen som den finder?
Hvis jeg kører med din streng, bliver input ændret sådan her:
Input before: <p>hej hej hej</p><p>hej hej hej</p><p>hej hej hej</p><p>hej hej hej</p><p>{{video}}</p><p>hej hej hej</p><p>hej hej hej</p><p>hej hej hej</p><p>{{alert}}</p>
Input after: <p>hej hej hej</p><p>hej hej hej</p><p>hej hej hej</p><p>hej hej hej</p><p><p>Video Player</p></p><p>hej hej hej</p><p>hej hej hej</p><p>hej hej hej</p><p><p>Alert!</p></p>
Kode: Vælg alt
public class Program
{
static string Trim(string input)
{
input = input.Replace("{", "");
input = input.Replace("}", "");
return input;
}
static void Main(string[] args)
{
//
var collection = new Dictionary<string, string>();
collection["video"] = "<p>Video Player</p>";
collection["alert"] = "<p>Alert!</p>";
// var input = "<div>{{video-player}}</div>";
var input = "<p>hej hej hej</p><p>hej hej hej</p><p>hej hej hej</p><p>hej hej hej</p><p>{{video}}</p><p>hej hej hej</p><p>hej hej hej</p><p>hej hej hej</p><p>{{alert}}</p>";
Console.WriteLine($"Input before: {input}");
MatchCollection matches = Regex.Matches(input, "{{[a-zA-Z0-9-]*}}");
foreach (Match match in matches)
{
input = input.Replace(match.Value, collection[Trim(match.Value)]);
}
Console.WriteLine($"Input after: {input}");
}
}