1 votes

AppleScript pour masser les URLs

Je souhaite disposer d'un élément de menu Services qui prend le texte sélectionné (une URL) et échappe le caractère pour cent et les caractères de l'URL. # caractère :

  1. Remplacer % avec \%
  2. Remplacer # avec \string#

J'ai copié et édité un script existant qui fait une manipulation de texte similaire. Cela semble fonctionner correctement sauf lorsque l'URL contient un & .

Je pense que cela a quelque chose à voir avec le fait de devoir utiliser quoted form of mais je n'arrive pas à trouver le bon endroit pour le spécifier.

Entrée de l'échantillon :

http://books.google.com?xxx&xxx%22+xxx#v=onepage&q=%22Search%20String&f=false

Sortie requise

http://books.google.com?xxx&xxx\%22+xxx\string#v=onepage&q=\%22Search\%20String&f=false

Code :

on run {input, parameters}
set sanatizedURLString to ¬
    (do shell script ("echo " & input & "  | sed 's/%/\\\\%/g' | sed 's/#/\\\\string#/g' ;"))
return sanatizedURLString
end run

2voto

user3439894 Points 52496

C'est comme ça que je code il :

on run {input, parameters}
    set aURL to input as string
    set sanatizedURL to ¬
        do shell script "sed -e 's:%:\\\\%:g' -e 's:#:\\\\string#:g' <<< " & aURL's quoted form 
    return sanatizedURL
end run

       Conseil : Passez la souris sur l'écran et faites défiler horizontalement pour voir l'intégralité de l'image. code .


Notes :

input est un liste Par exemple :

{"http://books.google.com?xxx&xxx%22+xxx#v=onepage&q=%22Search%20String&f=false"}

set aURL to input as string le fait :

http://books.google.com?xxx&xxx%22+xxx#v=onepage&q=%22Search%20String&f=false

En el do shell script commande sed ne doit être appelé qu'une seule fois, et non deux comme dans la version originale code . sed peut prendre plusieurs commandes en utilisant le -e option Il n'est donc pas nécessaire dans ce cas de tuyau le site sortie d'un sed commande à un autre sed commande .

Il n'est pas nécessaire de echo quelque chose à sed comme il peut traiter un fichier ou un ici la chaîne et donc l'utilisation de <<< en el do shell script commande suivi par & aURL's quoted form qui est par exemple :

'http://books.google.com?xxx&xxx%22+xxx#v=onepage&q=%22Search%20String&f=false'

En citant le value de aURL il conserve le coquille de traiter tout caractères spéciaux du shell en el chaîne de caractères .

Ainsi, lorsqu'il est exécuté, le do shell script commande ressemble par exemple à.. :

do shell script "sed -e 's:%:\\\\%:g' -e 's:#:\\\\string#:g' <<< 'http://books.google.com?xxx&xxx%22+xxx#v=onepage&q=%22Search%20String&f=false'"

       Conseil : Passez la souris sur l'écran et faites défiler horizontalement pour voir l'intégralité de l'image. code .

L'utilisation de : vs. / en el sed commande est une préférence personnelle dans ce cas, car elle rend la commande plus facile à lire lorsqu'il faut faire de multiples échappatoires.

L'utilisation de echo dans l'original code aplatit le liste à un chaîne de caractères Cependant, je préfère ne pas utiliser cette méthode afin de rendre le système de gestion de l'information plus efficace. do shell script commande moins compliqué.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X