operations sur les NSString

CarmélideCarmélide Membre
08:53 modifié dans API AppKit #1
bonjour à  tous,

J'essaie de travailler sur une NSString qui contient "nom,prenom" et je voudrais l'afficher comme : "prenom nom".
Mon code compile mais ça bloque lors de l'utilisation de la fonction "substringWithRange", le debugger me dit que s_last est invalide.
Voici le code que j'utilise :

             &nbsp; NSString *ret_str, *ret_str_0;<br />                ret_str_0 = [nameTable objectAtIndex:n];<br />		//the string is initially displayed as LastName,FirstName<br />		//we have to format this before displaying<br />		NSUInteger sta=0, len = [ret_str_0 length];<br />                //je cherche la position de la virgule<br />		NSRange comma = [ret_str_0 rangeOfString:@&quot;,&quot;];<br />		NSString *s_last, *s_first;<br />                //Je cree une premiere string avec le nom, c&#39;est ici que ça bloque<br />		s_last = [ret_str_0 substringWithRange:NSMakeRange(sta, comma.location)];<br />                //Je cree une seconde string avec le prenom, pareil<br />		s_first = [ret_str_0 substringWithRange:NSMakeRange(comma.location, len-comma.location-2)];<br />		ret_str=[s_first stringByAppendingString:s_last];<br />


qu'est-ce que j'ai mal fait ? des références qui passent mal ?
merci de votre aide.

Réponses

  • Philippe49Philippe49 Membre
    08:53 modifié #2
    Tu dois inverser dans NSMakeRange(sta, comma.location)
    (la location c'est le début du NSRange et il se met en premier)


    Essaie cela :

    NSString *ret_str, *ret_str_0;
    ret_str_0 =@Lemercier , Jean-Nepomucène;
    NSArray * components=[NSString componentsSeparatedByString:@,];
    retStr=[NSString stringWithFormat:@%@ , %@",components[0],components[1];
  • CéroceCéroce Membre, Modérateur
    février 2009 modifié #3
    Je ne sais pas ce qui va mal, ce que je sais, c'est que tu prends la tête pour rien:

    NSString* originale = @&quot;nom,prénom&quot;;<br />NSArray* separation = [originale componentsSeparatedByString:@&quot;,&quot;];<br />NSString* finale = [NSString stringWithFormat:@&quot;%@ %@&quot;, [separation objectAtIndex:1], [separation objectAtIndex:0]];
    


    (Je me suis fait griller par Philippe, ou bien ?)
  • Philippe49Philippe49 Membre
    08:53 modifié #4
    dans 1234281307:

    (Je me suis fait griller par Philippe, ou bien ?)


    Yes, un quart de seconde d'avance ... payé par l'erreur que j'ai commise : components[0] au lieu de [components objectAtIndex:0]
  • CarmélideCarmélide Membre
    08:53 modifié #5
    en effet, ca parait tout de suite plus court  ;)

    bon alors j'ai pas compris puisqu'un clean de ma version a suffit pour que ca fonctionne... ???

    et pour revenir sur :
    Tu dois inverser dans NSMakeRange(sta, comma.location)
    (la location c'est le début du NSRange et il se met en premier)


    "sta" etant le debut de la chaine et "comma.location" la position de la virgule, je pense que tout etait dans le bon ordre :
    NSMakeRange(0, 8)
  • CéroceCéroce Membre, Modérateur
    08:53 modifié #6
    dans 1234282757:

    bon alors j'ai pas compris puisqu'un clean de ma version a suffit pour que ca fonctionne... ???


    C'est rageant, mais parfois, le make est fainéant: Il ne veut pas recompiler le source alors qu'il devrait. Souvent, mettre le dossier Build à  la poubelle va plus vite !
Connectez-vous ou Inscrivez-vous pour répondre.