Feedback

C# - Regex.Replace mit mehr Parametern

Veröffentlicht von am 30.04.2015
(0 Bewertungen)
Wenn man früher einen Regex.Replace machen wollte, der etwas komplizierter war, dann war das ziemlich komplex. Man musste sich entweder mit Member-Variablen oder einer eigenen Klasse behelfen:


using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
var replacer = new Replacer();
var result = replacer.ReplaceGroup("Hier Text 0815 Hier mehr Text", 42);
Console.WriteLine(result);
Console.ReadLine();
}
}

class Replacer
{
private Int32 m_Number;

public String ReplaceGroup(String text, Int32 number)
{
var regex = new Regex("Hier Text (?'Number'[0-9]+?) Hier mehr Text");
m_Number = number;
var result = regex.Replace(text, ReplaceRegex);
return (result);
}

private String ReplaceRegex(Match match)
{
var rawString = match.Groups[0].Value;
var toBeReplaced = match.Groups["Number"].Value;
var result = rawString.Replace(toBeReplaced, m_Number.ToString());
return (result);
}
}


Mit Lambda Expressions geht das deutlich eleganter:
GFU-Schulungen  [Anzeige]

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

C# 2017/2015/2013 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        var replacer = new Replacer();
        var result = replacer.ReplaceGroup("Hier Text 0815 Hier mehr Text", 42);
        Console.WriteLine(result);
        Console.ReadLine();
    }
}

class Replacer
{
    public String ReplaceGroup(String text, Int32 number)
    {
        var regex = new Regex("Hier Text (?'Number'[0-9]+?) Hier mehr Text");
        var result = regex.Replace(text, match => ReplaceRegex(match, number));
        return (result);
    }

    private String ReplaceRegex(Match match, Int32 number)
    {
        var rawString = match.Groups[0].Value;
        var toBeReplaced = match.Groups["Number"].Value;
        var result = rawString.Replace(toBeReplaced, number.ToString());
        return (result);
    }
}
Abgelegt unter regex, lambda.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!