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的帮助文件可以以一般文件的方式浏览)。 这里有着_许多_函数,所以不要纠结于每一个函数的文档。给自己留下印象,以便于将来的不时之用, 这就够了。
- 前言
- 鸣谢
- 预备知识
- 打印信息
- 设置选项
- 基本映射
- 模式映射
- 精确映射
- Leaders
- 编辑你的Vimrc文件
- Abbreviations
- 更多的Mappings
- 锻炼你的手指
- 本地缓冲区的选项设置和映射
- 自动命令
- 本地缓冲区缩写
- 自动命令组
- Operator-Pending映射
- 更多Operator-Pending映射
- 状态条
- 负责任的编码
- 变量
- 变量作用域
- 条件语句
- 比较
- 函数
- 函数参数
- 数字
- 字符串
- 字符串函数
- Execute命令
- Normal命令
- 执行normal!
- 基本的正则表达式
- 实例研究:Grep 运算符(Operator),第一部分
- 实例研究:Grep运算符(Operator),第二部分
- 实例研究:Grep运算符(Operator),第三部分
- 列表
- 循环
- 字典
- 切换
- 函数式编程
- 路径
- 创建一个完整的插件
- 旧社会下的插件配置方式
- 新希望:用Pathogen配置插件
- 检测文件类型
- 基本语法高亮
- 高级语法高亮
- 更高级的语法高亮
- 基本折叠
- 高级折叠
- 段移动原理
- Potion段移动
- 外部命令
- 自动加载
- 文档
- 发布
- 还剩下什么?