2012-11-21 7 views
5

हटाएं मैं एक फ़ाइल नाम के रूप में इसे पारित करने के लिए एक स्ट्रिंग को सामान्य करने का एक तरीका खोजने का प्रयास कर रहा हूं।फ़ाइल नाम के लिए एक स्ट्रिंग मानकीकृत करें, उच्चारण और विशेष वर्ण

मैं इस अब तक है:

my_string.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n, '').downcase.gsub(/[^a-z]/, '_') 

लेकिन पहली समस्या: - चरित्र। मुझे लगता है कि इस विधि के साथ और अधिक समस्याएं हैं।

मैं नाम को नियंत्रित नहीं करता, नाम स्ट्रिंग में उच्चारण, सफेद रिक्त स्थान और विशेष वर्ण हो सकते हैं। मैं उन सभी को हटाना चाहता हूं, लहजे को इसी अक्षर ('é' => 'e') से प्रतिस्थापित करें और बाकी को '_' वर्ण से प्रतिस्थापित करें।

नाम की तरह हैं:

  • "Prélèvements - नियमित"
  • "Carnet de santé"
  • ...

मैं उन्हें करना चाहते हैं एक फ़ाइल नाम तरह बिना स्पेस/विशेष वर्ण:

  • "prelevements_routine"
  • "carnet_de_sante"
  • ...

मदद :)

उत्तर

9

ActiveSupport::Inflector.transliterate पर एक नजर डालें, तो यह वर्ण समस्याओं के इस प्रकार से निपटने के लिए बहुत उपयोगी है के लिए धन्यवाद। वहाँ पढ़ें: ActiveSupport::Inflector

उसके बाद, आप की तरह कुछ कर सकता है:

ActiveSupport::Inflector.transliterate my_string.downcase.gsub(/\s/,"_") 
+0

महान ... धन्यवाद – harsh4u

+2

की तरह "xxx ल Amour" नाम के साथ काम नहीं करता। ठीक करें: gsub (/ '/,' ') जोड़ना है – Alain

संबंधित मुद्दे