2012-04-27 17 views
6

मुझे स्ट्रिंग के स्ट्रिंग्स को बदलने की जानकारी है, लेकिन यह केवल तभी काम करता है जब मैं जानता हूं कि मैं वास्तव में क्या निकालना चाहता हूं।स्ट्रिंग से पहले वर्ण और सबकुछ हटाएं

अगर मैं की तरह निम्नलिखित एक स्ट्रिंग है:

"उच्च वहाँ-यह है एक परीक्षण & सुविधा = उच्च वहाँ"

मैं कैसे निकालूँ '& सुविधा' और सब कुछ उसके बाद आता है?

किसी भी मदद की सराहना की जाएगी। अग्रिम में धन्यवाद!

संपादित करें: यदि REGEX का उपयोग करने के लिए बिल्कुल जरूरी है, तो क्या कोई मुझे दिखा सकता है कि इसका उपयोग कैसे करें? मुझे पता है कि यह 10.7 आगे है लेकिन मैं इसके साथ ठीक हूं। इससे भी बेहतर, स्ट्रिंग ट्रिमिंग या एनएसएसकेनर का उपयोग करने का एक उदाहरण?

फिर से सभी को धन्यवाद।

संपादित करें: नीचे पोस्ट किया गया समाधान सही है, लेकिन मेरे लिए एक क्रैश हुआ। इस प्रकार मैंने समस्या हल की:

NSString *newString = [[oldString componentsSeparatedByString: @"&feature="] objectAtIndex:0]; 
+0

जबकि तकनीकी रूप से एक समाधान है, कि समाधान अधिक काम की तुलना में यह करने की जरूरत है (अर्थात्, एक सरणी बनाता है)। आपको रेडलमार के समाधान पर वापस जाना चाहिए और जांच करनी चाहिए कि आप क्या कर रहे थे जिससे यह दुर्घटनाग्रस्त हो गया, क्योंकि आप शायद इसे अभी भी कर रहे हैं और इससे अन्य समस्याएं पैदा हो जाएंगी। –

+0

आपकी मदद के लिए धन्यवाद v लेकिन मुझे विश्वास है कि मैंने एक अच्छा रूप लिया है और मैंने अभी एक स्ट्रिंग बनाई है, इसे एक यूआरएल से भर दिया है, इसे परिवर्तित किया है, इसे छंटनी की है, और फिर इस समाधान क्रैश का उपयोग कर रहा है। मैं अपनी गहराई से बाहर निकलने की कोशिश कर रहा हूं कि यह क्यों दुर्घटनाग्रस्त हो जाता है। – Cristian

+1

जैसा कि मैंने कहा था, आपको इसके बारे में एक प्रश्न पूछना चाहिए। आप जिन दुर्घटनाओं से सामना करते हैं, उससे आप कुछ भी उपयोगी नहीं सीख सकते हैं; जब आप दुर्घटनाग्रस्त हो जाते हैं, तो आपको इससे निपटना चाहिए और आपको जो मिल रहा है उससे सीखना चाहिए। –

उत्तर

20

यह इस तरह REGEX बिना किया जा सकता:

NSString *string = @"hi-there-this-is-a-test&feature=hi-there"; 
    NSRange range = [string rangeOfString:@"&feature"]; 
    NSString *shortString = [string substringToIndex:range.location]; 
+0

इसका परिणाम क्रैश में होता है:/ – Cristian

+0

यह तब नहीं होता जब मैं इसे चलाता हूं। क्या आपको एक त्रुटि संदेश मिलता है – rdelmar

+0

@ क्रिस्टियन: फिर आप कुछ और गलत कर रहे हैं। यह सही समाधान है। आपको दुर्घटना के बारे में एक अलग सवाल पोस्ट करना चाहिए। –

1

पैटर्न-मिलान, उर्फ ​​नियमित अभिव्यक्तियों को देखें।

ओह, वाह, टीआईएल उद्देश्य-सी कोको में नियमित अभिव्यक्ति करने के लिए कोई अंतर्निहित तरीका नहीं है? Regular expressions in an Objective-C Cocoa application

के अनुसार, उस प्रश्न में उल्लिखित libs हैं।

+0

कोई अंतर्निहित तरीका नहीं है? जैसे 'stringByReplacingOccurrencesOfString() लेकिन सबकुछ बाद में हटाएं? – Cristian

+0

ठीक है, आप अपने स्वयं के फ़ंक्शन के साथ कोड को कोड कर सकते हैं जो मिलान किए गए स्ट्रिंग की स्थिति प्राप्त करने के लिए अंतर्निहित कॉल करता है, फिर उस बिंदु पर स्ट्रिंग को ट्रिम कर देता है। और यदि आपके पास पर्याप्त सरल वातावरण है, तो यह ठीक होगा। लेकिन एक बार आपकी परियोजना बढ़ने के बाद, आप कट-एन-पेस्टिंग करेंगे जो साझा कोड ... एक मजबूत lib का उपयोग क्यों नहीं करते? – MarkHu

+0

यह एक छोटी परियोजना है, और यह कोड लूप फ़ंक्शन में शामिल किया जाएगा, और केवल एक विशिष्ट घटना है जिसे मुझे छुटकारा पाने की आवश्यकता है, जो 'और फीचर' को हटा रहा है और सबकुछ बाद में बदल जाएगा। यदि आप इसे ढूंढने का एक उदाहरण प्रदान कर सकते हैं और फिर ट्रिम कर सकते हैं तो मैं बहुत आभारी रहूंगा! – Cristian

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