2013-08-03 101 views

回答

4

將文件名更改爲小寫,並與小寫擴展名進行比較。

filename.downcase.end_with?(*%w(.ext1 .e2 .extension)) 

'MAIN.RB'.downcase.end_with?(*%w(.ruby .rb)) # => true 
+0

注意,在這種特殊情況下,這是(可能)的罰款,但在總體上是** **沒有足夠的'比較之前downcase'的字符串。例如''DASS「.downcase.ends_with?(」ß「)'永遠不會*爲真,但兩個字符串」DASS「和」daß「*之間的不變大小寫比較應該返回」true「(實際上'casecmp'返回'-1',但這是一個錯誤)。 –

+0

@KonradRudolph,哪個操作對於''和''SS'(或''ss'')產生了正確的結果? – falsetru

+0

在Ruby中?我不知道。但是,Unicode *強制要求*在案例不變的比較中比較真實(原因在於''''''''被定義爲'SS' - 這是德國人的特質)。 Ruby再次實際上並沒有這樣做,但這又是因爲Ruby的字符串處理存在一個錯誤。 –