2012-01-21 12 views
16

में एक निश्चित अनुक्रमणिका में एक चरित्र को बदलें, मैं एक एनएसएसटींग की एक निश्चित अनुक्रमणिका में किसी चरित्र को प्रतिस्थापित करने का एक तरीका ढूंढ रहा हूं।एनएसएसटींग

उदाहरण के लिए: myString = @"******";

मैं एक 'ए' के ​​साथ 3 "*" बदलना चाहते हैं, तो यह है कि स्ट्रिंग इस तरह दिखता है: myString = @"**A***";

मैं कैसे इस लक्ष्य को हासिल कर सकते हैं?

अग्रिम धन्यवाद

+1

http://stackoverflow.com/questions/7940104/replace-character-in-string – Emil

+0

का संभावित डुप्लिकेट आप इस लिंक के साथ प्रयास कर सकते हैं। यह वही समस्या है जो आप कर रहे हैं। http://www.iphonedevsdk.com/forum/iphone-sdk-development/76235-nsstring-how-replace-character-certain-index.html – Sarah

उत्तर

25

इस के साथ प्रयास करें:

char *str = (char *)[myString UTF8String]; 
str[2] = 'A'; 
myString = [NSString stringWithUTF8String:str]; 
बेशक

कि आप सुनिश्चित न कि myString कम से कम है होना चाहिए:

NSString *str = @"*******"; 
str = [str stringByReplacingCharactersInRange:NSMakeRange(3, 1) withString:@"A"]; 
NSLog(@"%@",str); 
18

वास्तव में दो विकल्प हैं;

के बाद से NSString केवल पढ़ने के लिए है, तो आप NSString पर mutableCopy कॉल करने के लिए एक NSMutableString वास्तव में बदला जा सकता है कि प्राप्त करने के लिए, तो NSMutableString पर replaceCharactersInRange:withString: फोन उस में पात्रों को बदलने के लिए की जरूरत है। यदि आप स्ट्रिंग को एक से अधिक बार बदलना चाहते हैं तो यह अधिक कुशल है।

एनएसएसटींग पर stringByReplacingCharactersInRange:withString: विधि भी है जो वर्णों के साथ एक नया एनएसएसटींग लौटाता है। यह एक ही बदलाव के लिए अधिक कुशल हो सकता है, लेकिन आपको प्रत्येक प्रतिस्थापन के लिए एक नया एनएसएसटींग बनाने की आवश्यकता है।

+0

धन्यवाद कि नौकरी हुई! मैंने अपनी समस्या हल की! – niclas

1

आप थोड़ा सी का उपयोग कर कोई आपत्ति नहीं है, कुछ इस तरह का उपयोग करें ऐसा करने से पहले 3 अक्षर। इसके अलावा, यह ऐसा कुछ करने का एक बहुत तेज़ और कुशल तरीका है।

+0

आईओएस में काम करता है, लेकिन मैकोज़ पर नहीं है। मेरा मानना ​​है कि मैकोज़ ने आवंटित स्ट्रिंग को वापस कर दिया है। – Borzh

4

होने पर आपके स्ट्रिंग "परीक्षण" इस नमूने विधि

-(NSString *)string:(NSString*)string ByReplacingACharacterAtIndex:(int)i byCharacter:(NSString*)StringContainingAChar{ 

    return [string stringByReplacingCharactersInRange:NSMakeRange(i, 1) withString:StringContainingAChar]; 

} 

की कोशिश करो और आप कॉल विधि

[self string:yourString ByReplacingACharacterAtIndex:0 byCharacter:@"?"] 

भागो और जाओ से चाहते हैं पहले अक्षर "टी" के साथ प्रतिस्थापित किया जाना चाहिए "*"

0

प्रतिक्रिया से त्वरित विस्तार के साथ मेरा योगदान:

extension NSString{ 

    func replacingACharacterAtIndex(pIndex : Int, pChar : Character) -> NSString{ 

     return self.stringByReplacingCharactersInRange(NSRange(location: pIndex, length: 1), withString: String(pChar)) 
    } 
}