2017-08-12 1 views
0

Je sais, titre ridicule. Voici ce que je dois faire:Emacs: Convertir la chaîne avec plusieurs manipulations

chaines de caractères qui ressemblent à ceci:

* [1.1 Training]() 
* [1.1.1 Special Training by Category]() 
    * [A. New Hire Orientation Program]() 

Et ajouter .md suffixe à chacun et à placer les résultats dans les parens, comme ceci:

* [1.1 Training](training.md) 
* [1.1.1 Special Training by Category](special_training_by_category.md) 
    * [A. New Hire Orientation Program](new_hire_orientation_program.md) 

Je m en utilisant Emacs et besoin d'une macro qui va:

  1. Rechercher chaque chaîne (ligne)
  2. Copie tout après le numéro de chapitre, lettre de chapitre ou de la période, et avant la clôture « ] »
  3. transformons en Minuscule, supprimer les espaces et les remplacer par des underscores
  4. Ajouter « .md » aux résultats
  5. Coller les résultats entre les parens

Je suis en train d'apprendre et regex la manipulation de chaînes, mais celui-ci semble assez impliqué. Toute aide est appréciée.

Merci

Répondre

1

En fonction de la fréquence à laquelle vous devez faire, vous voudrez peut-être écrire une commande pour elle. Mais il peut être fait avec query-replace-regexp (C-M-%) avec l'expression rationnelle et le remplacement [\1 \2](\,(replace-regexp-in-string " " "_" (downcase \2)).md). Notez le \,: il vous permet d'utiliser elisp pour transformer des chaînes.

Liens:

+0

Où puis-je apprendre à lire la réponse que vous avez publié? Je vais copier et jouer avec cette fois, mais je voudrais déchiffrer et appliquer la logique ailleurs. ("Donne un poisson à un homme, tu le nourris une fois, apprends à un homme à pêcher, tu lui donnes à manger toute une vie") – SeaDude

+0

Ajout de liens qui devraient tout expliquer. – jpkotta

+0

Pour des capacités de pêche améliorées, lisez (et recherchez!) Le manuel d'Emacs: 'C-h i g (elisp) Regular Expressions'. Vous devrez peut-être apprendre à utiliser le lecteur d'informations: à partir du tampon '* info *', vous pouvez taper 'h' pour démarrer son didacticiel et' d' pour revenir à la page de niveau supérieur (qui contient des notes utiles au Haut). – phils