我正在使用来自Pflag libraray的StringSliceP,接受字符串列表作为CLI参数。我从Windows命令提示符调用Go应用程序。我希望列表中的某些字符串包含()双引号字符,但我无法做到这一点。"转义引号不起作用:goapp.exe --string-slice-list "a\"b",c,d,e预期结果:[]string{"a\"b", "c", "d", "e"}实际结果:Error: invalid argument "a\"\\b,c,d,e" for "--string-slice-list" flag: parse error on line 1, column 1: bare " in non-quoted-field将报价加倍不起作用:goapp.exe --string-slice-list "a""b",c,d,e预期结果:[]string{"a\"b", "c", "d", "e"}实际结果:Error: invalid argument "a\"b,c,d,e" for "--string-slice-list" flag: parse error on line 1, column 1: bare " in non-quoted-field
1 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
以下是从Windows命令提示符执行此操作的方法:
goapp.exe --string-slice-list \"a\"\"b\",c,d,e
产量和[a"b c d e]
goapp.exe --string-slice-list \"a\\\"\"b\",c,d,e
确实如此(我不确定你真正想要哪一个)。[a\"b c d e]
正如已经指出的那样,这样做的原因是Pflag库使用Go标准库编码/ csv来支持RFC 4180中描述的格式。如果我们从第5、6和7段中提到第2节:
如果字段未用双引号括起来,则双引号可能不会出现在字段中。
包含换行符 (CRLF)、双引号和逗号的字段应括在双引号中。
如果使用双引号将字段括起来,则出现在字段内的双引号必须通过在字段前面加上另一个双引号来转义。
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消