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]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

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!