Quelle est la meilleure façon de remplacer un caractère est une chaîne dans Objective-C pour iPhone SDK?Remplacement de chaîne dans Objective-C
Répondre
Vous pouvez utiliser la méthode
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target
withString:(NSString *)replacement
... pour obtenir une nouvelle chaîne avec une sous-chaîne remplacé (Voir NSString
documentation pour les autres)
Exemple d'utilisation
NSString *str = @"This is a string";
str = [str stringByReplacingOccurrencesOfString:@"string"
withString:@"duck"];
NSString
Les objets sont immuables (ils ne peuvent pas être modifiés), mais il existe une sous-classe modifiable, NSMutableString
, qui vous propose plusieurs méthodes de remplacement des caractères dans une chaîne. C'est probablement votre meilleur pari.
Le problème existe dans les anciennes versions sur iOS. dans le dernier, le droit-à-gauche fonctionne bien. Ce que je l'ai fait, est comme suit:
d'abord je vérifier la version iOS:
if (![self compareCurVersionTo:4 minor:3 point:0])
Than:
// set RTL on the start on each line (except the first)
myUITextView.text = [myUITextView.text stringByReplacingOccurrencesOfString:@"\n"
withString:@"\u202B\n"];
Si vous voulez plusieurs remplacement de chaîne:
NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo
Il est également possible de remplacer la chaîne par 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
NSString *stringreplace=[yourString stringByReplacingOccurrencesOfString:@"search" withString:@"new_string"];
Veuillez utiliser le lien [edit] pour expliquer comment ce code fonctionne et ne donnez pas simplement le code, car une explication est plus susceptible d'aider les futurs lecteurs. Voir aussi [réponse]. [source] (http://stackoverflow.com/users/5244995) –
Je pensais que le point d'avoir NSString et une sous-classe NSMutableString était parce qu'une instance de NSString est * * inchangeable. Bien que - comme toute personne sensée, je préférerais avoir des canards que des ficelles tous les jours - le fait que vous venez d'écraser le contenu de «str» m'a fait perdre la tête. – ele
Mais je suppose que l'adresse de 'str' a changé dans le processus – Colas
il ne change pas. str contient maintenant une toute nouvelle chaîne. stringByReplacingOccurencesOfString ne mute pas la chaîne. Il retourne simplement une nouvelle chaîne. –