help-gnu-emacs
[Top][All Lists]
Advanced

[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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]