Satimage Précédent
change
Accueil Documentation Smile Texte, Unicode, Regular expressions change  
La commande change remplace du texte en utilisant des chaînes de caractères standard ou des expressions régulières : pour utiliser les expressions régulières, il faut spécifier change [...] with regexp. Si besoin est, change convertit le paramètre direct, le paramètre in et le paramètre into en Unicode text.
changereplace all occurrences of a substring
string -- le texte à remplacer
into string -- le texte de remplacement
in anything -- du texte (string ou alias)
[starting at] integer -- défaut : 0
[for] integer -- longueur du texte après starting at
[case sensitive] boolean -- défaut : true
[regexp] boolean -- défaut : false
[whole word] boolean -- seulement sans regexp. défaut : false
[regexpflag] list of string -- un sous-ensemble de {"IGNORECASE", "EXTEND", "MULTILINE", "SINGLELINE", "FIND LONGEST", "FIND NOT EMPTY", "DONT CAPTURE GROUP", "NOTBOL", "NOTEOL"}; défaut {}
[syntax] string -- la syntaxe pour les expressions régulières (si le paramètre regexp vaut true). L'une des chaînes de texte suivantes : ("POSIX" | "POSIX_EXTENDED" | "EMACS" | "GREP" | "GNU_REGEX" | "JAVA" | "PERL" | "RUBY"). Défaut: "RUBY"
Result: anything -- le nouveau texte si le paramètre in est une string, sinon le nombre de remplacements effectués dans le fichier.
  • Attention, lorsque le paramètre in est une variable AppleScript, change ne modifie pas son contenu. Le texte modifié est le résultat renvoyé par change : si votre script ne stocke pas ce résultat dans une variable, le texte modifié est perdu.
    set the_str to "hello"
    change "e" into "u" in the_str
    the_str
      --  "hello"
  • change accepte une liste comme paramètre direct. Vous devez alors fournir une liste de même taille pour le paramètre into.
    change {"e", "o"} into {"E", "O"} in "hello world"
      --  "hEllO wOrld"
  • change peut travailler sur des listes de texte, c'est-à-dire qu'il est possible de passer une liste pour le paramètre in.
    change "([0-9]{1,2})/([0-9]{1,2})" into "\\2/\\1" in {"31/12/2007", "29/2/2008"} with regexp
    -- {"12/31/2007", "2/29/2008"}
  • change accepte une référence à un fichier pour le paramètre in. change modifie le fichier et renvoie le nombre de changements effectués.

    Si vous utilisez change sur un fichier ASCII, change le considèrera comme un fichier UTF-8, ce qui fait que les caractères ASCII élevés seront illisibles.

  • change accepte pour le paramètre in une référence à une fenêtre de texte ou à une fenêtre Unicode de Smile.

    Utiliser change sur une fenêtre de texte peut être considérablement plus lent que sur une variable de texte, mais cela préserve les styles. (change n'accepte pas une liste de référence de fenêtres).

  • L'exemple suivant change toutes les occurrences de "this" en "that" dans tous les fichiers d'extension "txt", dans un dossier donné (et dans ses sous-dossiers).

    set {f} to navchoose folder
    set theFiles to list files f of extension "txt"
    repeat with i from 1 to (count theFiles)
          change "this" into "that" in (get item i of theFiles)
    end repeat

English version
Copyright ©2008 Paris, Satimage