# [COCOA] Remplacer un caractère par un autre dans une chaine



## SuperCed (15 Février 2005)

Je cherche à remplacer tout simplement un caractère par un autre dans chaine de type NSString ou NSMutableString.

Bref, j'ai une chaîne NSString "voila ma chaine" et j'aimerais remplacer les espace par des "+".

J'ai cherché un peu, mais je n'ai encore rien trouvé...


----------



## Didier Guillion (15 Février 2005)

SuperCed a dit:
			
		

> Je cherche à remplacer tout simplement un caractère par un autre dans chaine de type NSString ou NSMutableString.
> 
> Bref, j'ai une chaîne NSString "voila ma chaine" et j'aimerais remplacer les espace par des "+".
> 
> J'ai cherché un peu, mais je n'ai encore rien trouvé...



Si cela peut t'aider :
/***************************************************************************
				SubstituteString
Substitue une sequence present dans une chaine par une autre sequence
=> chaine source, sequence a chercher, chaine de substitution
****************************************************************************/

- (NSString *) SubstituteStringNSString *)source fromTableNSString *)tag fromTableNSString *)substWith
{
NSArray *listItems;

listItems=[source componentsSeparatedByString:tag];
if(listItems)
    source=[listItems componentsJoinedByString:substWith];
return(source);
}


Cordialement


----------



## SuperCed (16 Février 2005)

Merci, pendant ce temps, j'ai trouvé une solution :

```
[myURL replaceOccurrencesOfString:@" " withString:@"+" options:NSLiteralSearch range: NSMakeRange(0, [myURL length])];
```


----------



## molgow (16 Février 2005)

J'ai regardé un peu dans l'API Cocoa et je n'ai rien trouvé pour faire ça... je trouve ça étrange :-/

Y a bien quelques fonctions comme celle-ci, mais rien pour ton problème exactement


----------



## SuperCed (16 Février 2005)

La solution que j'ai trouvée est parfaite.
Tu dois regarder au mauvais endroit.
Il faut utiliser NSMutableString et pas NSString.


----------



## molgow (16 Février 2005)

Non mais ça aurait été bien qu'Apple livre une fonction toute faite pour faire ce genre d'opération (encodage d'URL). Parce que ce que j'aime pas dans ta solution, c'est que ça va remplacer tous les espaces par des "+"... or ça ne correspond pas exactement à ce qu'il faudrait faire pour une chaîne de caractère quelconque représentant une URL.

Exemple :

```
http://www.monsite.com/Mon Dossier/mapage.php?param=toto titi
```

Si ton but c'est de rajouter un + entre toto et titi, ça va aussi rajouter un + entre Mon et Dossier, or il faudrait mettre un %20 à cet endroit pour que ça marche non ?


----------



## SuperCed (16 Février 2005)

On ne parle pas de la même chose. Dans mon cas, je voulais réellement mettre des + à la place des espaces. C'est volontaire, mais mon but n'était pas ici de faire une vraie URL standard.
Mon but était de rajouter des + pour utiliser un moteur de recherche précis.

Donc dans mon cas, le sélecteur est parfait.

Par contre, en effet, pour créer une URL de toute pièce à partir d'une NSString, il faut passer par le core foundation.

J'avais trouvé une fonction qui faisait cette conversion nickel. un CFCreateMachin...


----------

