如何从变量的末尾修剪空格

law*_*ist 7 emacs elisp

我正在寻找一个如何从变量末尾删除一个或多个空格的例子.

(let ((test-variable "hello "))

  (if (eq ?\s (aref test-variable (1- (length test-variable))))

    (setq test-variable "hello")))
Run Code Online (Sandbox Code Playgroud)

Boz*_*sov 9

在Emacs 24.4(将于今年晚些时候发布)中,这将更加简单:

(require 'subr-x)

(string-trim-right "some string  ")
Run Code Online (Sandbox Code Playgroud)

当你等待24.4时,你可以简单地string-trim-right在本地定义:

(defun string-trim-right (string)
  "Remove trailing whitespace from STRING."
  (if (string-match "[ \t\n\r]+\\'" string)
      (replace-match "" t t string)
    string))
Run Code Online (Sandbox Code Playgroud)


Dre*_*rew 7

简单:(car (split-string "hello "))==>"你好"

您也可以显式使用参数TRIM,因为文档字符串建议:

(split-string "hello   "
              split-string-default-separators
              t
              split-string-default-separators)
Run Code Online (Sandbox Code Playgroud)


9mj*_*mjb 5

或者

(replace-regexp-in-string "\s+$" "" "bar    ")
"bar"
Run Code Online (Sandbox Code Playgroud)

  • `$` 表示行的结束,而不是字符串的结束。你应该使用 `\\'` 来代替。 (4认同)