Entwickler-Ecke
Basistechnologien - Regex Problem
Joe.Black - Di 30.09.14 15:50
Titel: Regex Problem
Hallo Leute,
Ich habe ein kleines Problem, ich hoffe ihr könnt mir helfen.
Ich habe einen Eingangsstring in dem mehrere(beliebig viele) DatumZeit-Angaben (2016-08-2212:05:00) vorkommen können.
C#-Quelltext
1:
| string eingang = "asd:sdfsdgf-abc2016-08-2212:05:00xyzabc2015-08-2212:05:00xyzabc2014-08-2212:05:00xy-sdf:z"; |
Ich müsste eigentlich nur die "-" und ":" Zeichen aus den Datumsangaben herausbekommen,
(2016-08-2212:05:00 --> 20160822120500)
aber eben nur aus denen. Frei stehende Doppelpunkte und Bindestriche müssten bleiben.
So das der String am Ende so aussieht.
C#-Quelltext
1:
| string ausgang = "asd:sdfsdgf-abc20160822120500xyzabc20150822120500xyzabc20140822120500xy-sdf:z"; |
Ich komme leider nicht mehr weiter und leider komme ich nicht darum herum.
Hoffe ihr könnt mir helfen.
MfG
Moderiert von
Th69: Titel geändert: original "Blödes C# - Regex Problem, bitte um Hilfe"
Moderiert von
Th69: C#-Tags hinzugefügtModeriert von
Th69: Topic aus C# - Die Sprache verschoben am Di 30.09.2014 um 17:02
papa69 - Di 30.09.14 16:08
hi,
als Lösungsansatz: splitte den string bis zu der Stelle, wo er unverändert bleiben soll, den "rest" dann per regex "säubern" und schlussendlich den string wieder zusammenfügen
Marc. - Di 30.09.14 17:55
Ich habe leider gerade in VS zur Hand, aber hier wird das Ersetzen schön erklärt:
http://msdn.microsoft.com/de-de/library/ewy2t5e0%28v=vs.110%29.aspx:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| using System; using System.Text.RegularExpressions;
public class Example { public static void Main() { string pattern = @"\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*"; string replacement = "$1"; string input = "$16.32 12.19 £16.29 €18.29 €18,29"; string result = Regex.Replace(input, pattern, replacement); Console.WriteLine(result); } } |
Das schwierigste ist wohl das Pattern. Wenn es nicht darum geht das Datum und die Uhrzeit zu valdieren, könnte das schon ausreichen:
\d{4}(-)\d{2}(-)\d{4}(:)\d{2}(:)\d{2} mit vier Gruppen. Du kannst das RegEx-Pattern auch auf
http://regex101.com/r/xG8fD3/1 testen. ;)
Joe.Black - Mi 01.10.14 14:21
Ich danke euch für die schnelle Hilfe.
Dank euch konnte ich es jetzt lösen.
Das war genau der Gedankenansatz der mir gefehlt hat.
Nochmals Danke schön.
MfG
PS.: Ja die Seite für die Regex-Geschichte ist gut. Hab gleich mal den Link gespeichert.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!