2013-07-30 4 views
6

मैं एक ऐसा फ़ंक्शन ढूंढने की कोशिश कर रहा हूं जो स्ट्रिंग के भीतर किसी निश्चित स्थिति पर वर्ण निकालेगा। उदाहरण के लिए, मैं इसे में एक तिथि के साथ एक लंबे फ़ाइल नाम है, और मुझे केवल तारीख के साथ खत्म करना चाहते हैं:एक सेट स्थिति पर अक्षर निकालें

'LT50420331984221PAC00_B7.tif' 

और मैं केवल '1,984,221' भाग चाहते हैं। मैं एक जटिल कार्य के साथ आया हूं, लेकिन यह सोच रहा था कि क्या एक और अधिक सुरुचिपूर्ण समाधान है।

+0

मुझे नहीं पता कि यह प्रदान की गई जानकारी के साथ उत्तर देने के लिए सार्वभौमिक रूप से संभव कैसे होगा। क्या तिथि भाग: हमेशा 'n' वर्णों के बाद शुरू होता है? हमेशा '19XX' या' 20XX' से शुरू करें? हमेशा 'n' अक्षर के लिए चलाएं? क्या आप कोई और जानकारी प्रदान कर सकते हैं जो उत्तर देने में आसान हो? – thelatemail

+0

क्या आप ओपी में अपना समाधान जोड़ सकते हैं? – agstudy

+0

आर प्रोग्रामिंग विकीबूक में सबकुछ समझाया गया है: http://en.wikibooks.org/wiki/R_Programming/Text_Processing – PAC

उत्तर

13

आप अपने स्ट्रिंग में तारीख की सही स्थिति का पता है आप

substr('LT50420331984221PAC00_B7.tif', 10, 16) 
+1

यदि दिनांक भाग _always_ एक ही स्थिति में है, तो मैं यही उपयोग करूंगा। – Jesse

3

उदाहरण के लिए उपयोग कर सकते हैं:

gsub('(.*)([0-9]+{7})[A-Z].*','\\2','LT50420331984221PAC00_B7.tif') 
"1984221" 

यहाँ मुझे लगता है कि तिथि बड़े अक्षर से पहले 7 अंकों का होता है।

+0

यदि आप स्ट्रिंग की लंबाई मान रहे हैं, तो 'sub'' पर 'sub' का उपयोग करने का क्या फायदा है? –

+1

@ रिकार्डोस्पोर्टा मैं स्ट्रिंग की लंबाई नहीं मान रहा हूं। लंबाई कुछ प्रारूप में एक तिथि की लंबाई है। मैं इस तारीख की स्थिति मानता हूं। – agstudy

+0

हां, हम अलग-अलग शर्तों का उपयोग करके, वही बातें कह रहे हैं। मैं बस सोच रहा था कि आप इस विशिष्ट संदर्भ में 'उप' का उपयोग करने से क्या प्राप्त करते हैं जिसे आप 'substr' का उपयोग करने से नहीं कर सकते हैं? –

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