2013-05-07 13 views
6

मेरे उपयोगकर्ता कभी-कभी एस्ट्रोफ़े (') के बजाय दर्ज करते हैं, प्रतीकों जो एस्ट्रोफ़े () की तरह दिखते हैं, जो डेटाबेस के साथ कुछ समस्याएं पैदा करता है।स्ट्रिंग (रूबी) में Apostrophe के साथ सिंगल कोट्स को बदलें

मैं बहुत तरह gsub के साथ उन्हें बदलने के लिए करने की कोशिश की:

result.gsub(/\‘/, "'") 
result.gsub(/‘/, "'") 

इन विकल्पों में काम की न तो - त्रुटि मिल रही है:

syntax error, unexpected $end, expecting ')' 
    return result.gsub(/\‘/, "'").gsub("’", "'") 
         ^

वे रूबी द्वारा आरक्षित कर रहे हैं? मैं उन्हें कैसे बदलूं?

+2

जो रूबी संस्करण वाई करता है कहां उपयोग करें? – Mattherick

+0

1.9.2 - क्योंकि हेरोोकू इसका उपयोग करता है –

+0

परिणाम = "'हैले'" result.gsub (/ \ '/, "'") .gsub ("'", "'") अमान्य मल्टीबाइट चार (यूटीएफ -8) वाक्यविन्यास त्रुटि, अप्रत्याशित $ अंत, उम्मीद '' '। यह एक एन्कोडिंग समस्या होनी चाहिए। – Mattherick

उत्तर

6

अपने पाठ संपादक तरह UTF-8 वर्णों का समर्थन नहीं करता सीधे, तो आप उन्हें इस तरह से बच सकते हैं:

"\u2018" 
अपने उदाहरण में

इसलिए, यह होगा:

result.gsub(/\u2018/, "'") 
+2

फेंकता है यदि आप बाएं और दाएं उद्धरण तार प्राप्त करना चाहते हैं तो आपको इसके बजाय myString.gsub (/ [\ u2018 \ u2019] /, "'") करना होगा। रेलवे ऐप के लिए हाल ही में विंडोज एक्सएमएल निर्यात के साथ ऐसा करना पड़ा। –

+0

जहां से आपको ''' '' \ u2018 "' के लिए मानचित्रण मिला है? मुझे '' ô 'के लिए इसकी ज़रूरत है .. कृपया मदद करें। –

+0

आप एक [यूनिकोड टेबल] (http://unicode-table.com/en/search/?q=ô) देखकर 'ô' का यूनिकोड कोड पॉइंट पा सकते हैं) जो आपको बताएगा कि यह' यू + 00F4'। रुबी में, इसका मतलब है कि आपको '" \ u00F4 "लिखना है। – kiplantt

1

प्रयास करें:

result.gsub("‘", "'") 

यह काम करना चाहिए।

+0

यह वास्तव में त्रुटि –

0

@kiplantt के अलावा, निम्नलिखित भी काम करता है (बस इसका परीक्षण किया गया)

puts result.gsub(/(\`)/, "\\'") 
संबंधित मुद्दे