उद्देश्य-सी में स्ट्रिंग प्रतिस्थापन


275

कैसे एक चरित्र को बदलने के लिए उद्देश्य-सी में एक स्ट्रिंग है?

जवाबों:


781

आप विधि का उपयोग कर सकते हैं

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target 
                                        withString:(NSString *)replacement

... प्रतिस्थापित के साथ एक नई स्ट्रिंग प्राप्त करने के लिए ( NSStringदूसरों के लिए प्रलेखन देखें )

उदाहरण का उपयोग करें

NSString *str = @"This is a string";

str = [str stringByReplacingOccurrencesOfString:@"string"
                                     withString:@"duck"];

2
मुझे लगा कि NSString और NSMutableString उपवर्ग होने की बात इसलिए थी क्योंकि NSString का एक उदाहरण अपरिवर्तनीय है । हालांकि - किसी भी समझदार व्यक्ति की तरह, मैं किसी भी दिन स्ट्रिंग्स की तुलना में बतख कर सकता हूं - इस तथ्य को कि आपने अभी- strअभी अपने दिमाग को उड़ा दिया है।
ग्यारह

1
लेकिन मुझे लगता है कि strइस प्रक्रिया में बदलाव का पता
चलने पर

16
यह नहीं बदलता है। str में अब एक नया स्ट्रिंग शामिल है। stringByReplacingOccurencesOfString स्ट्रिंग को म्यूट नहीं करता है। यह बस एक नया स्ट्रिंग लौटाता है।
सेप्टियादी अगुस

22

NSStringऑब्जेक्ट अपरिवर्तनीय हैं (उन्हें बदला नहीं जा सकता है), लेकिन एक परिवर्तनशील उपवर्ग है NSMutableString, जो आपको एक स्ट्रिंग के भीतर वर्णों को बदलने के लिए कई तरीके देता है। यह शायद आपका सबसे अच्छा दांव है।


10

यदि आप कई स्ट्रिंग प्रतिस्थापन चाहते हैं:

NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo

7

यह stringByReplacingCharactersInRange के साथ पॉसिबल स्ट्रिंग रिप्लेसमेंट: withString:

for (int i = 0; i < card.length - 4; i++) {

    if (![[card substringWithRange:NSMakeRange(i, 1)] isEqual:@" "]) {

        NSRange range = NSMakeRange(i, 1);
        card = [card stringByReplacingCharactersInRange:range withString:@"*"];

    }

} //out: **** **** **** 1234

0

आईओएस पर पुराने संस्करणों में समस्या मौजूद है। नवीनतम में, दाएं-से-बाएं अच्छी तरह से काम करता है। मैंने जो किया, वह इस प्रकार है:

पहले मैं iOS संस्करण की जाँच करता हूँ:

if (![self compareCurVersionTo:4 minor:3 point:0])

से:

// set RTL on the start on each line (except the first)  
myUITextView.text = [myUITextView.text stringByReplacingOccurrencesOfString:@"\n"
                                                           withString:@"\u202B\n"];

0
NSString *stringreplace=[yourString stringByReplacingOccurrencesOfString:@"search" withString:@"new_string"];

यह कोड कैसे काम करता है यह समझाने के लिए कृपया संपादन लिंक का उपयोग करें और केवल कोड न दें, क्योंकि स्पष्टीकरण में भविष्य के पाठकों की मदद करने की अधिक संभावना है। इसका जवाब भी देखें । स्रोत
जेड फॉक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.