2012-01-21 31 views
16

'de belirli bir dizgede bir karakteri değiştirin Bir karakteri NSString'in belirli bir dizininde değiştirmenin bir yolunu arıyorum. ÖrneğinNSString

: myString = @"******";

Bir "A" ile 3'üncü "*" değiştirmek istiyor, dize şöyle görünür şekilde: myString = @"**A***";

Bunu nasıl başarabiliriz? İki seçenek gerçekten var

+1

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

+0

'un olası kopyası Bu bağlantıyı deneyebilirsiniz. Sahip olduğun aynı sorunu var. http://www.iphonedevsdk.com/forum/iphone-sdk-development/76235-nsstring-how-replace-character-certain-index.html – Sarah

cevap

25

bununla deneyin: Elbette

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

Eğer myString en azından sahip olduğu kesinlikle emin olmalıdır: Biraz C kullanarak sakıncası yoksa, böyle bir şey kullanmak

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

önceden

teşekkürler; NSString salt okunur olduğundan

, daha sonra o karakterleri değiştirmek için NSMutableString üzerinde replaceCharactersInRange:withString: diyoruz, aslında değiştirilebilir bir NSMutableString almak için NSString üzerinde mutableCopy çağırmanız gerekir. Dizeyi birden çok kez değiştirmek isterseniz, bu daha verimlidir.

NSString'de, karakterlerin değiştirildiği yeni bir NSString döndüren stringByReplacingCharactersInRange:withString: yöntemi de vardır. Bu, tek bir değişiklik için daha verimli olabilir, ancak her değiştirme için yeni bir NSString oluşturmanızı gerektirir.

+0

Bu işe yaradı! Sorunumu çözdüm! – niclas

1

Bunu yapmadan önce 3 karakter. Bunun dışında, böyle bir şey yapmanın çok hızlı ve verimli bir yolu. dize "test" eğer

+0

iOS'ta çalışır, ancak MacOS'ta bulunmaz. MacOS'un yeni ayrılmış dizeye geri döndüğüne inanıyorum. – Borzh

4

bu örnek yöntemi

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

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

} 

deneyin ve çağrı yöntemiyle

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

çalıştırın ve Git daha "*" İlk karakter "t" ile değiştirilmesi gerekir istiyorum

0

yanıtından hızlı uzantılı My katkısı:

extension NSString{ 

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

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