2011-06-04 238 views
16

我想分割一个字符串使用'拆分字符串'函数的基础上。字符。但是 (split-string "1.2.3" ".")根本不起作用。它只是返回一个可变数量的空字符串列表。是。需要以某种不同的方式逃脱或指定的特殊字符?Elisp拆分字符串函数来拆分字符串。字符

回答

7

如果你调用describe-functionsplit-string,通常按F1˚Fsplit-string输入,您可以在文档中看到,第二个参数是不只是一个角色,而是一个正则表达式:

如果SEPARATORS不是零,它应该是一个正则表达式匹配的文本,它可以区分但不是子串的一部分。如果nil缺省为'split-string-default-separators',通常为“[\ f \ t \ n \ r \ v] +”,并且OMIT-NULLS被强制为t。

虽然对于大多数简单的字符串操作的Emacs内置的功能足够了,当你使用字符串操作巨资elisp的代码,s.el第三方库是必不可少的。您可以通过运行命令package-installs作为软件包名称,通过Emacs软件包管理器进行安装。假设你在几个模块中都有多个函数,所有这些模块都是用字符串做的,比如加入,分割,大写,比较,修剪空白等等。这是有道理的有在一个共同的名字空间所有的字符串相关的功能,所以s.el的替代内置split-strings-split

(s-split "\\." "1.2.3") ; ("1" "2" "3") 

例如,如果您需要转换字符串" 1-2-3 ""3.2.1",你可写:

(s-reverse (s-join "." (s-split "-" (s-trim z))))