Vim|Vim 统计行内特定字符次数,按奇偶替换
今天遇到一个问题,要统计一个文本行内特定字符的出现次数,同时按照奇数次替换,比如:
"aaa"aaad"aaaa"得到如下内容:
"aaaa"
"aaaa
"aaaa"aaaa"aaa
"aaaaa"aaaa"aaaa"aaaa"aaaa"
"aaa"aaaaa
``aaa"aaad``aaaa"操作步骤如下:
``aaaa"
``aaaa"
``aaaa"aaaa``aaa"
``aaaaa"aaaa``aaaa"aaaa``aaaa"
``aaa"aaaaa
:let n=0 | g/"/if(count(getline('.'),'"') % 2 != 0) | s/^ /ok / | endif | let n+=1
【Vim|Vim 统计行内特定字符次数,按奇偶替换】接着,我们进行奇偶替换:总体翻译过来就是如果“出现次数为奇数,将其行首添加一个ok+空格,这样标记完成后,我们来到有ok的行,处理相应的引号。
- let n=0
- g/"/
- if(...) | ... | endif
- count(range, char) 统计range里面char的数量
- getline('.') 获得当前行内容
:let a = ['"', '``']
:%s/"/\=reverse(a)[0]/g
- a['...', '...'] 设置一个数组
- \=CMD 返回CMD的结果
- reverse(a)[0] 数组首尾值交换
解释一下:
遇到第一个引号反转数组,返回数组第0项,遇到第二个引号,反转数组,这样数组返回到初始状态,取第一项,如此反复,由于引号总数是偶数,那么奇数次的引号总会被替换成``,偶数次则保留原样。
推荐阅读
- 杭电oj——2030汉字统计
- 概率论/统计学|随机变量 的 分布函数 与 概率密度函数 的区别
- 临床统计学学习日志
- 用python统计小说出现频率最高的词语
- iOS|iOS runtime应用整理
- 12.新增腾讯的统计(以渠道来源说明)
- Python日志_20211019_1631
- 【精力管理实验】精力统计day3
- 不要轻易尝试用wc|不要轻易尝试用wc -l统计Windows系统出产文件的滋味
- 《商务经济与统计技术》描述数据部分笔记