【问题标题】:How to remove escaped double-quotes inside a string in Common Lisp?如何在 Common Lisp 中删除字符串中的转义双引号?
【发布时间】:2017-03-29 04:24:50
【问题描述】:

运行(cl-json:encode-json-to-string 'ctx) 得到"\"ctx\""

我需要"ctx" 而不是"\"ctx\""

我可以使用 cl-ppcre 并删除字符串中匹配的双引号。 然而,这似乎有点矫枉过正。有没有其他方法可以做到这一点?

【问题讨论】:

  • 如果不想要json编码的字符串,为什么要json编码呢?
  • 需要编码的东西不止一种。
  • 也许,但它似乎不像 JSON 编码。
  • 也许是真的。

标签: string common-lisp


【解决方案1】:

gives "\"ctx\"" 是什么意思?

Common Lisp 在打印结果时使用\ 作为转义字符。

字符串本身有五个字符:

CL-USER 12 > (describe "\"ctx\"")

"\"ctx\"" is a SIMPLE-BASE-STRING
0      #\"
1      #\c
2      #\t
3      #\x
4      #\"

可以打印字符串内容:

CL-USER 11 > (write-string "\"ctx\"")
"ctx"
"\"ctx\""

您还可以删除第一个和最后一个字符:

CL-USER 10 > (subseq "\"ctx\"" 1 (- 6 2))
"ctx"

您还可以修剪所有周围的 " 字符:

CL-USER 13 > (string-trim "\"" "\"ctx\"")
"ctx"

CL-USER 14 > (string-trim '(#\") "\"ctx\"")
"ctx"

String trim 将一系列字符作为第一个参数:要删除的字符。第二个参数是字符串。

请注意,它将从前后删除所有此类字符:

CL-USER 15 > (string-trim "\"" "\"\"\"\"ctx\"\"\"\"\"\"\"")
"ctx"

【讨论】:

  • 问题是关于“如何删除字符串中的转义双引号”。答案是关于如何修剪字符串。也对 OP 投了反对票。
  • @mihai:不,那是错误的。双引号不会在字符串本身中转义。如果愿意的话,只是 Lisp 会这样打印它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多