Laden...

Zusammenhängende 0 Einträge in String ersetzen mit Counter

Erstellt von Shonki vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.014 Views
S
Shonki Themenstarter:in
2 Beiträge seit 2015
vor 8 Jahren
Zusammenhängende 0 Einträge in String ersetzen mit Counter

Hallo Community,

ich muss folgende Beispiele von Strings die 0 Einträge zählen und ersetzen...Es gilt allerdings für beliebige Kombinationen dies sind nur Beispiele zum zeigen des Problems

ABC0D0EF wird zu ABC1D1EF
00000000 wird zu 8
0B0000CF wird zu 1B4CF
ABCDEFGH bleibt gleich ABCDEFGH da keine 0 vorhanden ist...

Ich komme nicht auf den Trichter String Replace sollte das können aber ich sehe nicht wie.

Kann jemand helfen bitte?

Gruss 😃
Shonki

S
417 Beiträge seit 2008
vor 8 Jahren

Hallo,

also mittels regulärem Ausdruck ist das ein Einzeiler:

var res = Regex.Replace("0B0000CF", "0+", m => m.Value.Length.ToString());

Wenn du es ohne Regex lösen willst/musst, kannst du Zeichenweise durch den String iterieren und musst dir dann eben nen status merken (counter hochzählen falls das aktuelle Zeichen 0 ist bis keine 0 mehr kommt) und das ganze dann einem neuen String hinzufügen.
Nur mittels der normalen String.Replace-Methode lässt sich das Problem nicht lösen.

J
251 Beiträge seit 2012
vor 8 Jahren

Hoi,

Mit dem Replace würdest du ein Zeichen gegen ein anderes tauschen.

Man könnte fälschlicherweise davon ausgehen, dass es Dir helfen könnte. Soweit ich es verstehe kann man beim Replace kein Index angeben, so dass nur an einer bestimmten Stelle ein wechsel stattfindet. Sicherlich kann man sich aushelfen mit IndexOf und Substring uvm.

Theo. müsste man den string Char für Char durch laufen und je nach Zeichen eine Verarbeitung wählen
Also eign das was Sarc freundlicherweise angerissen hat 😃

S
Shonki Themenstarter:in
2 Beiträge seit 2015
vor 8 Jahren

Super heftig,

vielen Dank auf das 0+ wäre ich nie gekommen...

Regex ist so mächtig aber ich beherrsche es wenig leider...

Ich kann diesen Thread abschließen

Vielen Dank nochmals

Shonki 😃