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段移動
- 外部命令
- 自動加載
- 文檔
- 發布
- 還剩下什么?