String 如何在列表中插入引号?
我试图在列表中插入以下特殊字符:String 如何在列表中插入引号?,string,list,vim,filter,String,List,Vim,Filter,我试图在列表中插入以下特殊字符: let special_character = '[%!?(){}<>*+&:;^|#$€§°@\/[]=.,-_'"]' 并使用字符串筛选出此列表。 p、 e 我知道我必须避开大多数特殊字符才能将它们插入列表或过滤掉,但如何在列表中插入引号(')或双引号(“)并过滤掉它们?我不完全理解您想要实现的目标,但是: 将单引号加倍以在字符串或列表中处理它 使用v:val筛选列表。v:key用于字典 这里有一个可以帮助您的小示例。它不使用所有这些奇
let special_character = '[%!?(){}<>*+&:;^|#$€§°@\/[]=.,-_'"]'
并使用字符串筛选出此列表。
p、 e
我知道我必须避开大多数特殊字符才能将它们插入列表或过滤掉,但如何在列表中插入引号(')或双引号(“)并过滤掉它们?我不完全理解您想要实现的目标,但是:
v:val
筛选列表。v:key
用于字典ex
命令执行:
:let special_character = 'abcd_''"'
:let list = split(special_character, '\zs')
:echo list
:let newlist = filter(copy(list), 'v:val =~# "''"')
:echo newlist[0]
它产生:
['a', 'b', 'c', 'd', '_', '''', '"']
'
"
请注意单引号是如何在列表中转义的,但在打印时不会转义。另外,使用v:val
。要过滤双引号,只需使用反斜杠转义即可(我不确定,但测试了它)。还要注意,我拆分了字符串,因为否则,filter
函数只会对包含所有符号的字符串执行一次。这些方法将对列表中的每个元素运行
编辑添加双引号示例:
:let newlist = filter(copy(list), 'v:val =~# "\""') | echo newlist[0]
它产生:
['a', 'b', 'c', 'd', '_', '''', '"']
'
"
谢谢你的解释!
"