2014-06-24 9 views
0

Mon entrée est une chaîne qui représente l'heure et la date d'exécution de la machine. Le problème est que cette chaîne est mal formatée donc je ne peux pas utiliser DateTime.Parse pour le convertir en objet DateTime.

exemple d'entrée:Remplacement de caractères à des emplacements spécifiques

2014-01-07-15.26.46.000452

je dois le convertir en quelque chose que je peux travailler avec (le remplacement du dernier « - » avec un espace et le premier 2 avec un '' ':') comme ceci:

2014-01-07 15: 26: 46,000452

Je me suis dit que je devrais utiliser regex pour résoudre ce problème, car j'ai besoin de remplacer les caractères à des endroits spécifiques, donc myString.Replace ne fera rien. Malheureusement, ma connaissance de l'utilisation de regex est proche de rien et je n'ai trouvé aucun exemple correspondant à mon problème.

Quelqu'un peut-il m'aider à résoudre celui-ci? (Aussi, je voudrais une explication sur la façon dont & pourquoi cela fonctionne regex)

Répondre

2

Il ne semble pas très joli, mais fait le travail:

string yourString = "2014-01-07-15.26.46.000452"; 
string newString = Regex.Replace(yourString, @"(\d+)-(\d+)-(\d+)-(\d+).(\d+).(\d+).(\d+)", "$1-$2-$3 $4:$5:$6.$7"); 

Il supprime juste tous les chiffres à part le charabia autour de lui et construit la date que vous voulez.

5

Vous pouvez l'analyser en utilisant DateTime.ParseExact par Custom Date and Time Format Strings

DateTime dt = DateTime.ParseExact("2014-01-07-15.26.46.000452", 
            "yyyy-MM-dd-H.m.s.ffffff", 
            System.Globalization.CultureInfo.InvariantCulture); 
+0

Je préfère rester avec la regex mais c'est une bonne solution aussi. +1 –

+2

@TzahMama: Peut-être que je jette dans mes propres lunettes, mais c'est la meilleure solution. –

+1

@PatrickHofman C'est probablement mieux. D'un autre côté, j'essaie aussi de comprendre Regex. Cette solution fonctionne bien mais je veux expérimenter avec Regex donc je le favorise. –

Questions connexes