多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
Vim有许多内置(built-in)函数来操作字符串。本章中我们将介绍一些最为重要的字符串函数。 ## 长度 第一个介绍的函数是`strlen`。执行下面的命令: ~~~ :echom strlen("foo") ~~~ Vim显示`3`,也即`"foo"`的长度。现在尝试下面的命令: ~~~ :echom len("foo") ~~~ Vim再一次显示`3`。对于字符串,`len`和`strlen`有同样的效果。在本书稍后的章节我们会回过头来探讨`len`。 ## 切割 执行下面的命令(注意是`echo`而不是`echom`): ~~~ :echo split("one two three") ~~~ Vim显示`['one','two','three']`。`split`函数把字符串切割成列表。我们将简要介绍列表, 但现在不要纠结于此。 你也可以指定一个分隔符来代替"空白"。 ~~~ :echo split("one,two,three", ",") ~~~ Vim再一次显示`['one','two','three']`,因为`split`的第二个参数是",",表示以","切割。 ## 连接 你不仅可以切割字符串,还可以连接它们。执行下面命令: ~~~ :echo join(["foo", "bar"], "...") ~~~ Vim将显示`foo...bar`。暂时不要在意列表语法。 `split`和`join`可以合作无间。执行下面的命令: ~~~ :echo join(split("foo bar"), ";") ~~~ Vim显示`foo;bar`。首先我们把`"foo bar"`切割成列表,接着用分号作为分隔符把列表连接成字符串。 ## 大小写转换 Vim有两个函数来转换字符串大小写。执行下面的命令: ~~~ :echom tolower("Foo") :echom toupper("Foo") ~~~ Vim显示`foo`和`FOO`。这很浅显易懂吧。 在许多语言(如Python)有一个惯例是在进行比较之前把字符串强制转换成小写来实现大小写无关的比较。 在Vimscript里不需要这么做,因为有大小写不敏感的比较运算符。如果你回忆不起来,重新读关于比较的那一章。 (译注:如果你回忆不起来,那是第22章) 你可以自由选择使用`tolower`或`==#`以及`==?`来实现大小写敏感的比较。Vimscript社区对此还没有明显的偏好。 选定一个并在你所有的脚本中保持一致。 ## 练习 执行`:echo split('1 2')`和`:echo split('1,,,2',',')`。它们表现一致吗? 阅读`:help splt()`。 阅读`:help join()`。 阅读`:help functions`并浏览有关String的内置函数。使用`/`命令来辅助你(记住,Vim的帮助文件可以以一般文件的方式浏览)。 这里有着_许多_函数,所以不要纠结于每一个函数的文档。给自己留下印象,以便于将来的不时之用, 这就够了。