Autor Beitrag
Joe.Black
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 30.09.14 15:50 
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.
ausblenden 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.
ausblenden 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 user profile iconTh69: Titel geändert: original "Blödes C# - Regex Problem, bitte um Hilfe"
Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Di 30.09.2014 um 17:02
papa69
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 79
Erhaltene Danke: 23

Win 10, Ubuntu
C#, Java, C
BeitragVerfasst: 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

_________________
Daniel Bauer
... fatal ist nur, wenn sich das Licht am Ende des Tunnels als entgegenkommender ICE entpuppt ...
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Di 30.09.14 17:55 
Ich habe leider gerade in VS zur Hand, aber hier wird das Ersetzen schön erklärt: msdn.microsoft.com/d...0%28v=vs.110%29.aspx:
ausblenden 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);
   }
}
// The example displays the following output:
//       16.32 12.19 16.29 18.29  18,29


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 regex101.com/r/xG8fD3/1 testen. ;)
Joe.Black Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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.