2012-09-10 166 views
3

我想清除英文或阿拉伯字符串中的特殊字符。例如,下例中的「 - 」是一個特殊字符,顯示「?」當轉換爲UTF-8時。Rails:CLEAN來自英文或阿拉伯文的特殊字符串

文件名:1-Mechanical Drawings – Part 1應該像1-Mechanical Drawings Part 1

السلطات العراقية تعلنé應該是السلطات العراقية تعلن,其中é是特殊字符,應從字符串中刪除。

+0

你能更具體地說明你如何定義一個特殊字符嗎?什麼使'é'和'-'特別? – georgebrock

+0

當然。我需要在上傳之前清理文件名稱。我正在使用紙夾的transliterate_file_name。它的工作正常。問題是當我運行以下gsub來清理文件名時。它清理得很好,但不會清理特殊字符。 「1-Mechanical Drawings - Part 1 should like like 1-Mechanical Drawings Part 1」.squeeze(「」).gsub('','_')。gsub(/ \ W /,'')。downcase 我的應用程序支持不同語言的文件名 – Kashif

+0

請檢查http://stackoverflow.com/questions/1268289/how-to-get-rid-of-non-ascii-characters-in-ruby –

回答

0

這在一定程度上重新發明輪子,但你可以做這樣的事情,讓你在這個問題想你說的輸出:

def clean_file name 
    result = File.basename(name,".*") 
    result.gsub!(/[é–]\s?/,'') 
    result 
end 

與你感受到人物[]內更換位不在像電子等文件名合適的但要注意兩點:

  • 使用黑名單方法和上面可能意味着你離開的字符,你不希望 - 這是比較正常的使用像\ W白名單的方式來捕獲所有非字字符,至少在1.9以上的紅寶石工作,但也許是什麼意思在1.8上遇到問題
  • 在名稱中留下空格可能會導致問題,因此至少應該刪除「」和「小寫」。
相關問題