2016-03-01 5 views
5

मैं gsub का उपयोग करके मानक डैश था जो मुझे बदलने की कोशिश कर रहा था। कोड मैं परीक्षण था:विशेष वर्णों के साथ आर जीएसबी

gsub("-", "ABC", "reported – estimate")

यह, कुछ नहीं करता है, हालांकि। मैंने डैश को http://unicodelookup.com/#–/1 में कॉपी और पेस्ट किया और ऐसा लगता है कि यह एक डैश है। वह साइट एक एन डैश के लिए हेक्स, डीसी आदि कोड प्रदान करती है और मैं एन डैश को प्रतिस्थापित करने की कोशिश कर रहा हूं लेकिन भाग्य नहीं ले रहा हूं। सुझाव?

(बोनस के रूप में, यदि आप मुझे बता सकते हैं कि विशेष वर्णों की पहचान करने के लिए कोई फ़ंक्शन है जो उपयोगी होगा)।

मुझे यकीन नहीं है कि एसओ का कोड स्वरूपण डैश प्रारूप को बदल देगा, तो यहां डैश है जिसका मैं उपयोग कर रहा हूं (-)।

उत्तर

4

आप इसे रेगेक्स पैटर्न में निर्दिष्ट करके एन-डैश को प्रतिस्थापित कर सकते हैं।

gsub("–", "ABC", "reported – estimate") 

आप सभी हाइफ़न, एन और

gsub("[-–—]", "ABC", "reported – estimate — more - text") 

साथ उन्हें-डैश से मेल खाते हैं, अगर वहाँ एक स्ट्रिंग में गैर- ASCII वर्ण हैं IDEONE demo

जांच करने के लिए देखें कर सकते हैं का उपयोग

> s = "plus ça change, plus c'est la même chose" 
> gsub("[[:ascii:]]+", "", s, perl=T) 
[1] "çê" 

this IDEONE demo

देखें

आपको या तो खाली परिणाम मिलेगा (यदि एक स्ट्रिंग में केवल "शब्द" वर्ण और सफेद स्थान शामिल हैं), या - यहां के रूप में - कुछ "विशेष" वर्ण। विशेष चरित्र प्रतिस्थापन के लिए

+0

यह बहुत अच्छा है। शायद मैं "विशेष पात्रों" के साथ सही शब्दावली का उपयोग नहीं कर रहा था। इसका मतलब यह है कि मैं मानक यूटीएफ -8 नहीं हैं। उदाहरण के लिए, ô - ये वर्ण हैं जो मुझे लगता है कि readr :: write_csv() का उपयोग करते समय निर्यात करना अजीब लग रहा है। क्या आपके द्वारा दिया गया जीएसबी "विशेष" चरित्र के रूप में "ô" को पहचानने के लिए बदला जा सकता है। – ZRoss

+1

आप सभी एसीआईआई से मेल खाने के लिए इसे रेगेक्स के साथ उपयोग कर सकते हैं: 'gsub ("[[: ascii:]] +", "", s) '। यह परिणाम में सभी यूनिकोड वर्णों को रखते हुए स्ट्रिंग से सभी एसीआईआई को हटा देगा। –

+0

आपको उपरोक्त regex पैटर्न के साथ 'perl = T' का उपयोग करने की आवश्यकता है क्योंकि यह एक पीसीआरई निर्माण है। –

2

आप नकारात्मक पूरक कर सकते हैं।

gsub('[^\\w]*', 'ABC', 'reported - estimate', perl = True) एबीसी के साथ सभी विशेष पात्रों को प्रतिस्थापित करेगा। [^ \ W] एक पैटर्न है जो कुछ भी कहता है जो सामान्य चरित्र नहीं है।

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