Remplacement de chaîne en Objective-C

Quelle est la meilleure façon de remplacer un caractère est une chaîne dans Objective-C pour iPhone SDK?

Vous pouvez utiliser la méthode

- (NSSsortingng *)ssortingngByReplacingOccurrencesOfSsortingng:(NSSsortingng *)target withSsortingng:(NSSsortingng *)replacement 

… pour obtenir une nouvelle chaîne avec une sous-chaîne remplacée (voir la documentation NSSsortingng pour les autres)

Exemple d’utilisation

 NSSsortingng *str = @"This is a ssortingng"; str = [str ssortingngByReplacingOccurrencesOfSsortingng:@"ssortingng" withSsortingng:@"duck"]; 

NSSsortingng objects NSSsortingng sont immuables (ils ne peuvent pas être modifiés), mais il existe une sous-classe mutable, NSMutableSsortingng , qui vous offre plusieurs méthodes pour remplacer des caractères dans une chaîne. C’est probablement votre meilleur pari.

Si vous souhaitez un remplacement de plusieurs chaînes:

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

Il est également possible de remplacer des chaînes avec ssortingngByReplacingCharactersInRange: withSsortingng:

 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 

Le problème existe dans les anciennes versions sur iOS. au plus tard, la droite à gauche fonctionne bien. Ce que j’ai fait, c’est comme suit:

Je vérifie d’abord la version iOS:

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

Que:

 // set RTL on the start on each line (except the first) myUITextView.text = [myUITextView.text ssortingngByReplacingOccurrencesOfSsortingng:@"\n" withSsortingng:@"\u202B\n"]; 
 NSSsortingng *ssortingngreplace=[yourSsortingng ssortingngByReplacingOccurrencesOfSsortingng:@"search" withSsortingng:@"new_ssortingng"];