ruby on rails - अन्य विशेष वर्णों को संरक्षित करते हुए स्ट्रिंग से एक्सेन्ट/डायैरिटिक्स निकाल रहा है(कोशिश की गई mb_chars.normalize और iconv)



ruby-on-rails string (2)

यह रिक्त स्थान, डॉट्स, डैश को भी निकालता है, और कौन जानता है कि क्या और क्या

यह नहीं होना चाहिए

string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s

आपने गलत टाइप किया है, NUL वर्ण का संदर्भ देने के लिए, x00 से पहले एक बैकस्लैश होना चाहिए।

/[^\-x00-\x7F]/n # So it would leave the dash alone

आपने '' 'और' एक्स 'के बीच' - 'डाल दिया है, जो शून्य वर्ण के संदर्भ को तोड़ देगा, और इस प्रकार सीमा को तोड़ देगा

https://src-bin.com

पहले से ही एक बहुत ही समान सवाल है समाधानों में से एक इस तरह कोड का उपयोग करता है:

string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n, '').to_s

जो आश्चर्यजनक काम करता है, जब तक आप ध्यान नहीं देते कि यह रिक्त स्थान, डॉट्स, डेश भी निकालता है, और कौन जानता है कि क्या और क्या

मुझे वाकई निश्चित नहीं है कि पहला कोड कैसे काम करता है, लेकिन क्या यह केवल ऐक्सेंट पट्टी करने के लिए किया जा सकता है? या कम से कम वर्णों की सूची को संरक्षित करने के लिए दी जाए? Regexps का मेरा ज्ञान छोटा है, लेकिन मैंने कोशिश की (कोई फायदा नहीं हुआ):

/[^\-x00-\x7F]/n # So it would leave the dash alone

मैं इस तरह कुछ करने वाला हूं:

string.mb_chars.normalize(:kd).gsub('-', '__DASH__').gsub
  (/[^x00-\x7F]/n, '').gsub('__DASH__', '-').to_s

नृशंस? हाँ...

मैंने भी कोशिश की है:

iconv = Iconv.new('UTF-8', 'US-ASCII//TRANSLIT') # Also tried ISO-8859-1
iconv.iconv 'Café' # Throws an error: Iconv::IllegalSequence: "é"

कृपया मदद करें?


Answer #1

यह Iconv के रूप में साफ नहीं है, लेकिन जो मुझे लगता है कि आप चाहते हैं:

http://snippets.dzone.com/posts/show/2384





diacritics