I'd like to convert numerals from half-width to full-width characters with a simple regex search and replace as follows:
replace-regexp-in-string regexp rep string &optional fixedcase literal subexp start
(replace-regexp-in-string '(０ １ ２ ３ ４ ５ ６ ７ ８ ９) '(0 1 2 3 4 5 6 7 8 9))
Evaluating the above code in a buffer gave me this error:
(wrong-number-of-arguments (3 . 7) 2)
I suppose the missing argument is the string, which I assumed would take care of itself when I evaluate the code using M-: on a buffer.
How do I do this correctly?
I would like to abstract the commands given in @Tobias' answer into a single function, so that I can call them with a single key-binding.
Here's my attempt:
(defun num-half2full (query-replace-regexp [0-9] /,(string (+ (string-to-char \&) (- ?０ ?0)))))
(error "Malformed arglist: (query-replace-regexp [0-9] / (, (string (+ (string-to-char &) (- 65296 48)))))")
My last attempt at writing the function:
(defun num-full2half () "Convert numbers from full-width to half-width" (interactive) (goto-char (point-min)) (replace-regexp "[０－９]" (quote (replace-eval-replacement replace-quote (string (+ (string-to-char (match-string 0)) 48 (- 65296)))))))
The expected replacement did not take place in the buffer at which M-x<\kbd>(num-full2half) was called.