emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: string-strip


From: Lars Hansen
Subject: Re: string-strip
Date: Wed, 21 Jun 2006 18:47:41 +0200
User-agent: Debian Thunderbird 1.0.2 (X11/20060423)

Johan Bockgård wrote:

>Or how about if it worked like `split-string'?
>  
>
Brilliant idea. How about this?
*** /home/lh/cvsroot/emacs/lisp/subr.el 2006-06-13 12:37:24.000000000 +0200
--- subr.el     2006-06-21 18:44:11.200360589 +0200
***************
*** 2615,2620 ****
--- 2615,2642 ----
  
  ;;;; Replacement in strings.
  
+ (defconst string-strip-default-white-space "[ \f\t\n\r\v]*"
+   "The default value of white-space for `string-strip'.
+ A regexp matching strings of white space.")
+ 
+ (defun string-strip (string &optional white-space)
+   "Remove leading and trailing WHITE-SPACE from STRING.
+ If WHITE-SPACE is non-nil, it should be a regular expression matching white
+ space.  If nil it defaults to `string-strip-default-white-space', normally
+ \"[ \\f\\t\\n\\r\\v]*\".
+ 
+ Examples:
+   (string-strip \" foo \")        => \"foo\"
+   (string-strip \" foo\\nbar\\n \") => \"foo\\nbar\"
+   (string-strip \" \")            => \"\"
+ "
+   (let ((ws (or white-space string-strip-default-white-space)))
+     (save-match-data
+       (string-match
+        (concat "\\`\\(?:" ws "\\)\\(\\(?:.\\|\n\\)*?\\)\\(?:" ws "\\)\\'")
+        string)
+       (match-string 1 string))))
+ 
  (defun subst-char-in-string (fromchar tochar string &optional inplace)
    "Replace FROMCHAR with TOCHAR in STRING each time it occurs.
  Unless optional argument INPLACE is non-nil, return a new string."

reply via email to

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