NSRange

fouffouf Membre
20:14 modifié dans API AppKit #1
Voila ce que je cherche a faire :
j'ai un NSRange (si j'ai bien compris, il s'agit d'un objet qui permet de recuperer une partie des charactères d'un NSString) et je voudrais avoir en plus des characteres deja "selectionnes", 4 charactères en plus a gauche et a droite.

Exemple j'ai la phrase :
"Quousque tandem, Catilina, abutere patentia nostra" (Ciceron pour les non latinistes (les chanceux  ;))
et un NSRange qui "contient" les char "abutere". Or, je veux aussi recuperer les characteres "na, "(a gauche) et " pat" a droite. Comment faire?  :why?:

Vous me donnerez deja un bon coup de main si vous me disiez a quoi correspond les variables location et length dans NSRange (euh, oui, j'ai regarder dans la doc d'Apple pendant une heure  B) C'est imbitable  :why?:)

Merci de me repondre, je l'ecrirais rapidos dans mes notes

"Verba volant, scripta manent"

o:) o:) o:)

Réponses

  • muqaddarmuqaddar Administrateur
    janvier 2005 modifié #2
    Je crois que location correspond au numero de la lettre dans la chaine, et length au nombre de lettres que tu veux sélectionner.
    Attention, ça commence à  0 et pas à  1. ;)

    A partir de là , tu dois pouvoir arriver à  quelque chose. ;)

    Y'a aussi une autre fonction qui permet d'éclater une chaine à  partir d'un charactère comme l'espace, mais là , j'ai oublié le nom...

    EDIT : componentsSeparatedByString je crois...
    ça renvoie les groupes de mots ds un tableau.
  • fouffouf Membre
    20:14 modifié #3
    Merci beucoup oxitan.

    J'essaye ca tout de suite

    la methode pour eclater les chaines est substringWithRange:

    Merci encore  <3   o:) <br />
    PS:excusez-moi pour ces crise de latiniste en ma de citations  ;)  :o
  • ChachaChacha Membre
    20:14 modifié #4
    Coucou à  tous (ça faisait longtemps que j'étais pô venu)
    En fait je voulais juste rajouter quelque chose sur NSRange. C'est un peu à  côté de la question, mais ce n'est pas grave puisque oxitan y a déjà  répondu. Par contre, c'est un truc que j'ai découvert par hasard, et que je m'empresse de diffuser dans la mesure où c'est très pratique.
    Dans Cocoa, il n'y a pas que des classes, il y a aussi des trucs comme NSRange, NSRect... qui sont des struct C bien pratiques, mais qui du coup ont le défaut de ne pas avoir de constructeur (via alloc, init...), bref, je trouvais ça un peu lourdingue à  manipuler.
    Et puis un jour, je suis tombé sur NSMakeRange(), que j'ai cru tombée du ciel. Faites cette recherche dans la doc de XCode, et hop ! on tombe sur une page avec plein de fonctions super pratiques pour gérer ces structures qui ne sont pas des objets !
    +
    Chacha
  • 20:14 modifié #5

    j'ai un NSRange (si j'ai bien compris, il s'agit d'un objet qui permet de recuperer une partie des charactères d'un NSString) et je voudrais avoir en plus des characteres deja "selectionnes", 4 charactères en plus a gauche et a droite.


    Alors comme l'a dit Chacha NSRange n'est pas un objet mais une structure C. En fait elle ne contient pas de caractères mais seulement deux entiers : "location" et "length".

    Dans le code suivant :
    <br />NSString *myString = [anotherString substringWithRange: aRange];<br />
    


    Tu demande en fait à  créer un nouvel objet NSString qui contiendra les caractères de anotherString à  partir de l'index "location" et sur une longueur de "length" caractères.

    Donc si on reprend ton exemple et que aRange vise bien les caractères que tu voulais pour avoir en plus les autres il suffit de faire ainsi :

    <br />NSString *myString = [anotherString substringWithRange: NSMakeRange(aRange.location -4, aRange.length + 8)];<br />
    


    Mais attention si anotherString ne contient pas 4 caractères avant et après ça va planter.
Connectez-vous ou Inscrivez-vous pour répondre.