-

Vim有许多内置(built-in)函数来操作字符串。本章中我们将介绍一些最为重要的字符串函数。

长度

第一个介绍的函数是strlen。执行下面的命令:

:echom strlen("foo")

Vim显示3,也即"foo"的长度。现在尝试下面的命令:

:echom len("foo")

Vim再一次显示3。对于字符串,lenstrlen有同样的效果。在本书稍后的章节我们会回过头来探讨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。暂时不要在意列表语法。

splitjoin可以合作无间。执行下面的命令:

:echo join(split("foo bar"), ";")

Vim显示foo;bar。首先我们把"foo bar"切割成列表,接着用分号作为分隔符把列表连接成字符串。

大小写转换

Vim有两个函数来转换字符串大小写。执行下面的命令:

:echom tolower("Foo")
:echom toupper("Foo")

Vim显示fooFOO。这很浅显易懂吧。

在许多语言(如Python)有一个惯例是在进行比较之前把字符串强制转换成小写来实现大小写无关的比较。 在Vimscript里不需要这么做,因为有大小写不敏感的比较运算符。如果你回忆不起来,重新读关于比较的那一章。 (译注:如果你回忆不起来,那是第22章)

你可以自由选择使用tolower==#以及==?来实现大小写敏感的比较。Vimscript社区对此还没有明显的偏好。 选定一个并在你所有的脚本中保持一致。

练习

执行:echo split('1 2'):echo split('1,,,2',',')。它们表现一致吗?

阅读:help splt()

阅读:help join()

阅读:help functions并浏览有关String的内置函数。使用/命令来辅助你(记住,Vim的帮助文件可以以一般文件的方式浏览)。 这里有着_许多_函数,所以不要纠结于每一个函数的文档。给自己留下印象,以便于将来的不时之用, 这就够了。