[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: function to increase numbers in a buffer
From: |
Joakim Hove |
Subject: |
Re: function to increase numbers in a buffer |
Date: |
Wed, 23 Apr 2003 08:50:08 +0200 |
User-agent: |
Gnus/5.090017 (Oort Gnus v0.17) Emacs/21.2 (gnu/linux) |
Jordi Burguet Castell <jordi.burguet-castell@cern.ch> writes:
> Hello,
>
> I am trying to write a function that would work like query-replace-regexp,
> but instead of replacing each match with a fixed string, I want the matched
> numbers to be increased by 3.
Try this small function:
(defun addnumbers-in-region (p1 p2)
(interactive "r")
(save-excursion
(goto-char p1)
(let ((delta (string-to-number (read-from-minibuffer "Increase with amount:
"))))
(while (re-search-forward "\\([0-9]+\\)" p2 't)
(let* ((org-number (string-to-number (match-string 1)))
(new-number (+ delta org-number)))
(replace-match (format "%s" new-number)))))))
> Or, easier, I have a file that looks like this:
>
> 20 1 23523
> 20 2 23874
> 20 3 23898
(defun add3-to-column3 (p1 p2)
(interactive "r")
(save-excursion
(goto-char p1)
(while (<= (point) p2)
(beginning-of-line)
(re-search-forward "^[ ]*[0-9]+[ ]+[0-9]+[ ]+\\([0-9]+\\)[ ]*$")
(let ((new-number (+ 3 (string-to-number (match-string 1)))))
(backward-kill-word 1)
(insert (format "%4d" new-number)))
(next-line 1))))
Good - Luck
Joakim
--
Joakim Hove / hove@ii.uib.no / (55 5) 84076