-------- Original-Nachricht --------
> Datum: Sun, 2 Dec 2007 17:44:56 +0900
> Von: "Mike Mr." <saltydog4791 / gmail.com>
> An: ruby-talk / ruby-lang.org
> Betreff: file renaming/parsing help

> First of all let me say that I am an absolute newb when it comes to
> rails.  I am simply trying to work on an existing script that was
> written by someone else.
> 
> I need to take a filename that will always have a similar name and turn
> it into an rfc2822 compliant line for an xml file.  Here is what I have
> so far but I am absolutely lost as you can see.  sad
> 
> The filenames will always be the same, e.g. November 15,2007.mp3 or
> September 7,2008.mp3, etc.  One thing I am concerned about is the day
> since sometimes it will be a single digit and sometimes a double digit,
> although I am sure their is a way around that too.
> 
> I would love if someone could shed some light on this for me.  I might
> even learn something in the process.  smile
> 
> #The goal is turn "November 15,2007.mp3" into "Wed, 15 Nov 2007 19:00:00
> GMT"
> #
> #So far the output below gives me Wed, Nov15
> 
> 
> filename = "November 15, 2007.mp3"
> puts "Wed, " + ( filename[0,3]) + ( filename[-12,2])
> -- 
> Posted via http://www.ruby-forum.com/.

Dear Mike,

here's some code using regexps .. that avoids knowing
the exact indices where your one-digit or two-digit day information is.
To get the day of week, you can use the time class of Ruby.
(http://ruby-doc.org/core/classes/Time.html#M000261)

Best regards,

Axel 

------------------------------------------------------------
require "time"

mp_files=["November 15, 2007.mp3"]
result=[]
month=["January","February","March","April","May","June","July","August","September","October","November","December"]
year=/(1|2)[0-9]{3}/  # year must start in 1 or in 2 and have 4 digits
day=/[0-9]{1,2}/

file_month=''
file_year=''
file_day=''
mp_files.each{|file_name|
	file_name.sub!(/\.[^\.]*$/,'')  # chop off endings 
	month.each{|m| if file_name.index(m)!=nil; file_month=m; break; end}
	if file_month==''
		raise "No month given for file : " + file_name
	end
	ref_year=year.match(file_name)
	if ref_year!=nil
		file_year=ref_year[0]
	else
		raise "No year given for file : " + file_name
	end
	file_name.sub!(ref_year[0],'')  # remove year, so that doesn't interfere with search for file_name's day	
	ref_day=day.match(file_name)
	if ref_day!=nil
		file_day=ref_day[0]
	else
		raise "No day given for file : " + file_name
	end
	# get day of week
	dow=Time.parse([file_month,file_day,file_year].join(' ')).wday
	result<<Time.parse([file_month,file_day,file_year].join(' ')).to_s
}	
	
p 'result'
p result


-- 
Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten 
Browser-Versionen downloaden: http://www.gmx.net/de/go/browser