Bessere Möglichkeit, Leerzeichen zwischen doppelten Semikolons einzufügen

Bessere Möglichkeit, Leerzeichen zwischen doppelten Semikolons einzufügen

Sie können es mit Split versuchen Zeichenfolge in die Teile, dann ersetzen Sie leere Einträge durch Leerzeichen mit Select (es erfordert using System.Linq; ) und Join die Einträge zurück

var str = "A;B;;;;C";
var parts = str.Split(';').Select(p => string.IsNullOrEmpty(p) ? " " : p);

var result = string.Join(";", parts);

Die Ausgabe ist die folgende A;B; ; ; ;C

Benchmark-Ergebnis im Vergleich mit OP-Code und Regex Lösung:

Was klarer und eleganter ist, bleibt Ihnen überlassen.Benchmark-Code für die Referenz finden Sie unten

[SimpleJob]
public class Benchmark
{
    string input= "A;B;;;;C";

    [Benchmark]
    public string SplitJoinTest()
    {
        var parts = input.Split(';').Select(p => string.IsNullOrEmpty(p) ? " " : p);
        return string.Join(";", parts);
    }

    [Benchmark]
    public string DoubleReplaceTest()
    {
        return input.Replace(";;", "; ;").Replace(";;", "; ;");
    }

    [Benchmark]
    public string RegexTest()
    {
        return Regex.Replace(input, ";(?=;)", "; ");
    }
}

Eine Möglichkeit ist die Verwendung regulärer Ausdrücke.

using System.Text.RegularExpressions;

var result = Regex.Replace("A;B;;;;C;", ";(?=;)", "; ");

Wir ersetzen jedes Semikolon, dem ein weiteres Semikolon folgt, durch die Zeichenfolge "; " .

Es ist definitiv weniger überflüssig, und es ist klar, wenn Sie wissen, wie man Regex liest :) Ob es eleganter ist, müssen Sie selbst entscheiden.