c# - Extract dates from filename -
I have a situation where I need to remove the date from the filename whose normal pattern is [filename_] YYYYMMDD [.fileExtension]
Example "xxx_20100326.xls" or x2v_20100326.csv
The following program works Pigment 8 is set in the number pigment / YYYYMMDD length 8 public static string ExtractDatesFromFileNames (string filename) {return fileName.Substring (fileName.IndexOf ("_") + 1, 8); }
Is there a better option to get the same?
I am basically looking for standard practice.
I am using C # 3.0 and edit the .NET Framework 3.5
:
I have the solution and the answer to the LC. I used my program like
string regExPattern = "^ (?:. * _)? ([0- 9] {4}) ([0- 9] {2}) Is (? [0-9] {2}) (: \\ .. *) $ "; String result = Regex.Match (filename, @regExPattern). group 1]. value; The input in the function is: "x2v_20100326.csv"
But the output is: 2010 Instead of 20100326 (which is the expected one)
I Regex, especially if the file name has more than one underscore then you can capture the year, month, day, and if necessary, a date time < / Code> You can make sure that the file name is correct Remove Ag and it really matches the pattern to be searched for.
For the pattern [filename_] YYYYMMDD [.fileExtension] , I'm thinking something like this:
^ (?:. * _ )? ([0- 9] {4}) ([0- 9] {2}) ([0- 9] {2}) (?: \ .. *)? $ Then your occupation group will be year, month and day in that order.
Explanation:
^ : The beginning of your string.
(?:. * _)? : An optional non-capturing group, which contains characters characterized by any underscore.
([0-9] {4}) : A capturing group containing a four digit figure.
([0-9] {2}) : A capturing group containing two digit figures.
(?: \ .. *)? : An optional non-capturing group, which includes a dot after any number.
$ : The end of your string.
However, I will add it if you make sure that there is only one underscore in your files, and underline that date, you have a code cleaner and possibly a bit out of regex Will be faster. It is something to keep in mind based on expected input set.
Comments
Post a Comment