Service pour supprimer tous les espaces d'une chaîne?

4

Je cherche finalement à créer un service qui me permettra de compter tous les caractères non-blancs sélectionnés. Pour y arriver cependant, je cherche un moyen de supprimer tous les caractères d'espacement d'une chaîne d'un service que je peux ensuite utiliser à d'autres fins. Par exemple, je veux principalement l'utiliser pour obtenir des coordonnées ADN rapides tout en regardant la sortie dans Terminal.app, mais je peux penser à d'autres utilisations, telles que le comptage des caractères de code.

J'ai trouvé des scripts pour supprimer des espaces, mais rien de ce que j'ai trouvé ne semble tenir compte d'onglets, de caractères de nouvelle ligne, de retours à la ligne ou de tout autre caractère étrange ou étrange qui ne s'affiche pas.

Remarque: je ne souhaite pas créer de fichier, utiliser ou modifier le Presse-papiers.

Question secondaire: existe-t-il un moyen d'afficher (brièvement) le résultat dans un cadre, comme pour afficher les numéros de téléphone à partir de l'application Contacts?

hepcat72
la source
“Ne pas créer de fichier” —pas même temporaire? Je mets fréquemment des résultats intermédiaires dans / tmp / tmp, sachant que je vais bientôt l'écraser ou que le prochain démarrage l'enlèvera.
WGroleau le
Je pourrais écrire ma propre solution si j'étais disposé à le faire avec des fichiers temporaires. Je me demandais comment le faire sans aucun fichier (ça me semble plus propre).
hepcat72 le
Après plus de trente années passées à nettoyer les codes du code, je comprends que je veuille «me sentir plus propre». Mais parfois, je dois me forcer à résister à des détails qui ne comptent pas vraiment. Pour le code qui doit durer, la lisibilité est plus importante qu’élégante.
WGroleau
Existe-t-il un moyen de diriger la sélection stdin vers une commande et de remplacer la sélection par stdout? La regex en perl serait 's: \ S ::'
WGroleau
Oui, c'est un perlre très simple, mais vous ne l'avez pas tout à fait raison. Ce serait s: \ s :: gs. Il faut que le s à la fin de \ s corresponde à de nouvelles lignes, mais je ne pense pas que cela couvre les retours à la ligne. Pour cela, vous aurez besoin de s: [\ r \ s]: gs. C'est comme ça que je l'aurais fait si j'avais utilisé un fichier. Je ne ferais pas confiance à l'écho, surtout si c'est multi-ligne. C'est la première chose qui me vient à l'esprit. Mais vraiment, la solution AppleScript est ce que je cherchais. Il ne gère pas les caractères étranges, mais c'est assez bon.
hepcat72

Réponses:

4

Dans Automator , créez un nouveau service avec les paramètres suivants:

  • Le service reçoit le texte sélectionné dans [Terminal]

Ajouter un Run AppleScript actions , en remplaçant la valeur par défaut du code avec le code de ci - dessous:

Exemple de code AppleScript :

on run {input, parameters}

    set selText to item 1 of input as text
    set AppleScript's text item delimiters to {space, tab, linefeed, return}
    set selText to text items of selText
    set AppleScript's text item delimiters to {}
    set selText to selText as string

    display dialog ¬
        "The selection contains " & (count characters of selText) ¬
        & " characters." & linefeed & linefeed & selText ¬
        buttons {"OK"} default button 1

end run

Enregistrez le service Automator sous, par exemple: Compter les caractères sélectionnés

Maintenant dans Terminal , sélectionnez la sélection souhaitée , par exemple:

Texte sélectionné

Cliquez avec le bouton droit de la souris et sélectionnez Compter les caractères sélectionnés dans le menu contextuel Services .

Exemple de sortie de la sélection ci-dessus:

Boîte de dialogue d'affichage


Remarque: l' exemple de code AppleScript correspond à cela. Il ne fait appel à aucune méthode de traitement des erreurs et n'a pour but que de montrer l'une des nombreuses manières d'accomplir une tâche. Il incombe toujours à l'utilisateur d'ajouter / d'utiliser le traitement d'erreur approprié en fonction des besoins.

utilisateur3439894
la source
Impressionnant. Merci beaucoup. Je savais que quelqu'un saurait comment faire ça!
hepcat72
0

Vous pouvez essayer WordService. DEVONtechnologies .

C'est un logiciel gratuit qui fait ce que vous voulez (choisissez Services -> WordService: Statistiques ) et bien plus encore.

Voici le résultat avec une sélection de votre question:
entrez la description de l'image ici

De haut en bas:
Caractères
Espaces
Total
Mots
Lignes

PeterVP
la source
1
C’est un bon utilitaire, je l’utilise depuis de nombreuses années. Cependant, cette question concerne Terminal et AppleScript, pas un utilitaire tiers, ce qui ne répond pas vraiment à la question telle que posée.
user3439894
1
"Je cherche à créer un service qui me permettra de compter tous les caractères non-blancs sélectionnés" , Wordservice le fait et cela fonctionne avec la sortie du terminal.
PeterVP
Oui, mais je ne peux pas utiliser la sortie pour compter les nucléotides. Je veux une ficelle en retour, bien que j'avoue ne pas l'avoir demandé explicitement.
hepcat72
J'ai édité la question pour éclaircir la confusion de ce que je cherchais. Vous avez raison, ce n'était pas très clair.
hepcat72