Fonction rechercher/remplacer. Imaginons qu'on veuille faire la même chose que la fonction précédente mais différement. Plutôt que d'utiliser les "offset", c'est-à-dire la position des caractères dans la chaîne, on veut utiliser le "text item delimiter". Le "text item delimiter" de la langue française est l'espace et c'est par défault sa valeur dans AppleScript. En faisant varier cette valeur, on peut arriver à des résultats intéressant, comme cette fonction nous le montre.
on find_and_replace(une_chaine,caractere_cherche,caractere_remplace)
set text item delimiters to caractere_cherche
set les_mots to {} &text items of une_chaine
set resulat to 1st item of les_mots repeat with i from 2 to (length of les_mots)
set resulat to resulat & caractere_remplace & (itemi of les_mots)
end repeat
return resulat
end find_and_replace
set ma_phrase to "Je vends des pommes, des poires et des scooby doo"
return find_and_replace(ma_phrase,"des","les")
Explications : Nous savons que le séparateur de mot est l'espace en français ; ainsi dans la phrase "Je vends des pommes, des poires et des scooby doo", nous avons 10 mots. Si nous changeons le séparateur de mot de espace à "des", nous avons alors 4 mots : "Je vends "(1), " pommes, "(2), " poires et "(3) et " scooby doo"(4). à ce moment, il nous est facile de reconstituer la phrase en intercalant une chaîne de caractères entre chacun de ces nouveaux "mots".
Ainsi, pour chercher "des" et remplacer par "les", on fixe "des" comme "text item delimiter", on récupère chacun des mots dans une variable de type liste, et ensuite on les ajoute un à un avec "les" entre chaque. Pour que le résultat soit bon, on aura pris soin de commencer au deuxième mot et avec une chaîne contenant le premier mot, sinon on aurait un "les" en trop.
Astuces & application: On préfèrera toujours un code court et une procédure non récursive quand on a le choix.
On pourra utiliser cette fonction, ou en tout cas la méthode, chaque fois qu'il sera nécessaire de saucissonner une chaîne de caractères.