NSString: manipulations de chaà®nes

RocouRocou Membre
23:40 modifié dans API AppKit #1
Bonjour,

J'ai une manipulation de chaà®ne très simple à  faire mais je n'y arrive pas avec Cocoa.
Je voudrais remplacer toutes les quotes simples contenue dans une NSString par un antislash suivi d'une simple quote (remplacer ' par  /' )

Voici mon code (actuel car j'ai testé beaucoup d'autres dérivés):


&nbsp; &nbsp; &nbsp;  NSRange range;<br />&nbsp; &nbsp; &nbsp; &nbsp; NSString *maChaine;<br />&nbsp; &nbsp; &nbsp; &nbsp; NSString *adr=@&quot;rue du &#39;ho&#39;ho&#39;ho&quot;;<br /><br />	range.length=1;<br />	for (i=0;i&lt;longueur;i++)<br />	{<br />		range.location=i;	<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Comparaison de chaque caractère de la NSString avec le caractère simple quote<br />		if ([adr characterAtIndex:i]==[@&quot;&#39;&quot; characterAtIndex:0])<br />		{<br />			maChaine = [maChaine stringByAppendingString:@&quot;&#092;&#39;&quot;];<br />		}<br />		else<br />		{			<br />		&nbsp; &nbsp; &nbsp; &nbsp; maChaine = [maChaine stringByAppendingString:[adr substringWithRange:range]];<br />			<br />		}<br />	}<br />

Réponses

  • fouffouf Membre
    23:40 modifié #2
    Quelques petites remarques :

    - je trouve très lourd d'utiliser NSString pour ce genre de fonction alors que la classe NSMutableString est faite pour ca.

    - une fois que tu as fait ca, tu peux utiliser replaceOccurrencesOfString:withString:options:range: de NSMutableString qui fera tout le boulot à  ta place.
  • GreensourceGreensource Membre
    23:40 modifié #3
    Ah ouais c'est sûr vaut mieux utiliser NSMutableString pour ça. Et si tu veux le faire toi même dans un but d'optimisation, je te conseil de le faire en C directement.
  • RocouRocou Membre
    23:40 modifié #4
    dans 1247125790:

    Quelques petites remarques :

    - je trouve très lourd d'utiliser NSString pour ce genre de fonction alors que la classe NSMutableString est faite pour ca.

    - une fois que tu as fait ca, tu peux utiliser replaceOccurrencesOfString:withString:options:range: de NSMutableString qui fera tout le boulot à  ta place.

    Ha oui, merci, c'est beaucoup plus simple en effet.
    Pour info, le problème venait de l'anti-slash qui, j'imagine, doit être un caractère spécial sous Xcode/Cocoa
  • RocouRocou Membre
    23:40 modifié #5
    dans 1247127381:

    Ah ouais c'est sûr vaut mieux utiliser NSMutableString pour ça. Et si tu veux le faire toi même dans un but d'optimisation, je te conseil de le faire en C directement.

    C'est dans un but pédagogique que je cherche à  le faire en objective_C/Cocoa  ;)
  • AliGatorAliGator Membre, Modérateur
    23:40 modifié #6
    L'antislash est un caractère spécial non pas en Objective-C/Cocoa en particulier, mais en C en général (comme dans beaucoup d'autres langages)... puisqu'il sert à  échapper des caractères justement.

    Par exemple une chaà®ne de caractères en C s'écrit [tt]ch = "toto";[/tt] mais si tu veux mettre un guillemet dans cette chaà®ne, il faut l'échapper pour pas que ce guillemet referme la chaà®ne, donc écrire [tt]ch = "to\"to";[/tt]...

    Du coup l'antislash ayant cette signification d'échapper le caractère qui le suit... il doit lui-même être échappé aussi... en le faisant précéder d'un autre antislash.
Connectez-vous ou Inscrivez-vous pour répondre.