Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在列表中插入引号?_String_List_Vim_Filter - Fatal编程技术网

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', '_', '''', '"']
    '
    
    "
    

    谢谢你的解释!
    "