2016-07-10 6 views
-1

Ich schreibe eine node.JS-Anwendung zum Parsen von Google Takeout-Daten von Google Fotos, für EXIF-Daten.Daten in verschiedenen Formaten aus verschiedenen Zeichenketten in JavaScript extrahieren

Ich bin nicht gut in Regex und habe Seiten wie regexr.com vergeblich versucht, da es viele Unbekannte gibt. Aber ich frage mich, ob es einen effizienteren Weg gibt, dies zu tun?

sagen, dass ich verschiedene potentielle Saiten

"IMG_20150628_184721-ANIMATION" # There is a date + time within, but they are not in an ISO format, also non-regular characters "Screenshot_2015-06-27-22-51-00" # Has a date/time at the end, but also has useless string within it "2015-06-28" # Cleanly formatted date without time "2015-06-28 22:51:05" # Cleanly formatted date and time "2015-06-28 #1" # Date + Space and Extra characters that I don't want "2015-06-28 #3 " # Date + Space and extra characters that I don't want and a trailing space "2015-06-18-19" # Date + An extra number (happens to be the next day) "NoDateOrTimeInThisString" # No Date "IMG_1234" # No date

Diese Liste ist nicht erschöpfend, und es sein kann, nach Terminen andere Saiten, bevor + haben könnte. Es ist auch möglich, dass ein Datum/eine Uhrzeit nicht tatsächlich in der Zeichenfolge

Ich habe keine Möglichkeit zu wissen, welche dieser bestimmten Dateinamen ich am Ende enden werde, und innerhalb meines Wissensbereiches ich don Ich weiß nicht, wie ich in der Lage sein würde, die Daten aus jedem dieser Daten zu extrahieren.

Hat jemand eine Idee, wie ich dies in JavaScript tun würde? Wie eine Bibliothek? Wenn möglich, möchte ich es in ein JS Date/Time Objekt bringen können. Aber ich habe keine Ahnung, wie ich das machen würde.

+0

http://stackoverflow.com/a/18585980/3832970 und http: //stackoverflow.com/a/4478465/3832970 –

Antwort

0

Sie möchten vielleicht einen Blick auf Moment.js werfen.

Auch Regexes verdienen ein ganzes Tutorial, sie sind eine eigene Sprache. Sehen Sie sich insbesondere Gruppen an, mit denen Sie bestimmte Teile des passenden Ausdrucks extrahieren können.

Welche Annahmen dürfen Sie an der Eingabe machen? Wird es immer irgendwo eine Folge von JJJJ (...) mm (...) dd geben?

Sie könnten versuchen, so etwas wie

.*([0-9]{4}).*([0-9]{2}).*([0-9]{2}).* 

(Haben den Ausdruck noch nicht ausprobiert, kann einige Optimierungen benötigen.)