我使用的是在通用Lisp (SBCL)中的文本。在调用一个名为(write-input-data)的辅助函数之后,REPL返回一个字符串列表:
CL-USER> (write-input-data)
("2937" "AVpKuU6t_T0" "Joe" "Bush" "random@globo.com" "random@globo.com"
"WHTpassword" "NIL" "NIL" "1" "2" "-1" "NIL" "NIL" "0" "NIL" "on" "0"
"b4acdb97-6f1b-4a15-984a-c33c7448032f" "NIL" "NIL" "NIL" "NIL" "pt_BR" "NIL"
"NIL" "NIL" "NIL" "NIL" "NIL" "yjcIYTMI-bJuQg7nz3hes-qm" "NIL" "NIL" "NIL"
"NIL" "NIL" "NIL" "NIL" "NIL" "NIL" "reg_email_confirmation__"
"AZnc92iq5Xddjxw0eRPfTh1JH2sQg3gEZ3JDOYp5EQXQZwPSMJ3pAmJnQhH0wtgMb8mq7UxPNiOZIiuxUXpo9ZUwyQZh_Zvh3T_aJcVLBNCZ7Mc7CXfzH4QRKzxfVHXFTI8nR_MlnBWCx0cdAARjUAPGiaQxJJWnkZdS3pQGFiH5ZX83x7r2rFcYI0vmtrRNM50fplxK0ynsMVBYqLBPt-Vqlpf3YmEwGmAoV0FLinVgQ3Yg9WWO0vzLHqrnf3Tq2xVdEHnjHhcsC_RMB_w2CKh9jQlX5llIFVmID62pkCDPHE-aTx7BNsHkcLgaNgTLSWxjCoyEFpKN_Y0xUoSaU6YZAmKu1kaToSreyEWNXR7tyO3-237mOkl72Z3PhtrcI"
"NIL")然后,我尝试将其转换为一个用javascript语法填充字符串的数组:
CL-USER> (ps:ps (array (ps:lisp (write-input-data))))
"['2937'('AVpKuU6t_T0', 'Joe', 'Bush', 'random@globo.com', 'random@globo.com', 'WHTpassword', 'NIL', 'NIL', '1', '2', '-1', 'NIL', 'NIL', '0', 'NIL', 'on', '0', 'b4acdb97-6f1b-4a15-984a-c33c7448032f', 'NIL', 'NIL', 'NIL', 'NIL', 'pt_BR', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'yjcIYTMI-bJuQg7nz3hes-qm', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'reg_email_confirmation__', 'AZnc92iq5Xddjxw0eRPfTh1JH2sQg3gEZ3JDOYp5EQXQZwPSMJ3pAmJnQhH0wtgMb8mq7UxPNiOZIiuxUXpo9ZUwyQZh_Zvh3T_aJcVLBNCZ7Mc7CXfzH4QRKzxfVHXFTI8nR_MlnBWCx0cdAARjUAPGiaQxJJWnkZdS3pQGFiH5ZX83x7r2rFcYI0vmtrRNM50fplxK0ynsMVBYqLBPt-Vqlpf3YmEwGmAoV0FLinVgQ3Yg9WWO0vzLHqrnf3Tq2xVdEHnjHhcsC_RMB_w2CKh9jQlX5llIFVmID62pkCDPHE-aTx7BNsHkcLgaNgTLSWxjCoyEFpKN_Y0xUoSaU6YZAmKu1kaToSreyEWNXR7tyO3-237mOkl72Z3PhtrcI', 'NIL')];"其结果是几乎是完美的。不幸的是,有两个问题。首先,在开头有一个左括号:
'2937'('AVpKuU6t_T0'
它应该是一个逗号
'2937' , 'AVpKuU6t_T0'。
第二个错误是在最后。有一个右括号:
'NIL')];"
人们期望它什么都没有,只是:'NIL' ];"
为什么会发生这种情况?我能用抄本做点什么来解决吗?
显然,我可以解析字符串并删除括号的后验,但是我想有更好的方法来解决这个问题。
====更新
伟大的用户@Barmar建议不使用任何方法来解决这个问题。我们快到了。如果我这样做了:
CL-USER> (ps:ps '("2937" "AVpKuU6t_T0" "Joe" "Bush" "random@globo.com" "random@globo.com"
"WHTpassword" "NIL" "NIL" "1" "2" "-1" "NIL" "NIL" "0" "NIL" "on" "0"
"b4acdb97-6f1b-4a15-984a-c33c7448032f" "NIL" "NIL" "NIL" "NIL" "pt_BR" "NIL"
"NIL" "NIL" "NIL" "NIL" "NIL" "yjcIYTMI-bJuQg7nz3hes-qm" "NIL" "NIL" "NIL"
"NIL" "NIL" "NIL" "NIL" "NIL" "NIL" "reg_email_confirmation__"
"AZnc92iq5Xddjxw0eRPfTh1JH2sQg3gEZ3JDOYp5EQXQZwPSMJ3pAmJnQhH0wtgMb8mq7UxPNiOZIiuxUXpo9ZUwyQZh_Zvh3T_aJcVLBNCZ7Mc7CXfzH4QRKzxfVHXFTI8nR_MlnBWCx0cdAARjUAPGiaQxJJWnkZdS3pQGFiH5ZX83x7r2rFcYI0vmtrRNM50fplxK0ynsMVBYqLBPt-Vqlpf3YmEwGmAoV0FLinVgQ3Yg9WWO0vzLHqrnf3Tq2xVdEHnjHhcsC_RMB_w2CKh9jQlX5llIFVmID62pkCDPHE-aTx7BNsHkcLgaNgTLSWxjCoyEFpKN_Y0xUoSaU6YZAmKu1kaToSreyEWNXR7tyO3-237mOkl72Z3PhtrcI"
"NIL"))我得到了我想要的
"['2937', 'AVpKuU6t_T0', 'Joe', 'Bush', 'random@globo.com', 'random@globo.com', 'WHTpassword', 'NIL', 'NIL', '1', '2', '-1', 'NIL', 'NIL', '0', 'NIL', 'on', '0', 'b4acdb97-6f1b-4a15-984a-c33c7448032f', 'NIL', 'NIL', 'NIL', 'NIL', 'pt_BR', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'yjcIYTMI-bJuQg7nz3hes-qm', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'reg_email_confirmation__', 'AZnc92iq5Xddjxw0eRPfTh1JH2sQg3gEZ3JDOYp5EQXQZwPSMJ3pAmJnQhH0wtgMb8mq7UxPNiOZIiuxUXpo9ZUwyQZh_Zvh3T_aJcVLBNCZ7Mc7CXfzH4QRKzxfVHXFTI8nR_MlnBWCx0cdAARjUAPGiaQxJJWnkZdS3pQGFiH5ZX83x7r2rFcYI0vmtrRNM50fplxK0ynsMVBYqLBPt-Vqlpf3YmEwGmAoV0FLinVgQ3Yg9WWO0vzLHqrnf3Tq2xVdEHnjHhcsC_RMB_w2CKh9jQlX5llIFVmID62pkCDPHE-aTx7BNsHkcLgaNgTLSWxjCoyEFpKN_Y0xUoSaU6YZAmKu1kaToSreyEWNXR7tyO3-237mOkl72Z3PhtrcI', 'NIL'];"唯一的问题是我直接插入了列表,。我需要通过的函数调用间接地插入。如果我只尝试插入函数调用,它就不起作用:
CL-USER> (ps:ps (write-input-data))
"writeInputData();"如果我使用(ps:lisp技巧尝试类似的操作,那么与完全相同--同样的问题发生在圆括号中,没有创建数组:
> (ps:ps (ps:lisp (write-input-data)))
"'2937'('AVpKuU6t_T0', 'Joe', 'Bush', 'random@globo.com', 'random@globo.com', 'WHTpassword', 'NIL', 'NIL', '1', '2', '-1', 'NIL', 'NIL', '0', 'NIL', 'on', '0', 'b4acdb97-6f1b-4a15-984a-c33c7448032f', 'NIL', 'NIL', 'NIL', 'NIL', 'pt_BR', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'yjcIYTMI-bJuQg7nz3hes-qm', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'reg_email_confirmation__', 'AZnc92iq5Xddjxw0eRPfTh1JH2sQg3gEZ3JDOYp5EQXQZwPSMJ3pAmJnQhH0wtgMb8mq7UxPNiOZIiuxUXpo9ZUwyQZh_Zvh3T_aJcVLBNCZ7Mc7CXfzH4QRKzxfVHXFTI8nR_MlnBWCx0cdAARjUAPGiaQxJJWnkZdS3pQGFiH5ZX83x7r2rFcYI0vmtrRNM50fplxK0ynsMVBYqLBPt-Vqlpf3YmEwGmAoV0FLinVgQ3Yg9WWO0vzLHqrnf3Tq2xVdEHnjHhcsC_RMB_w2CKh9jQlX5llIFVmID62pkCDPHE-aTx7BNsHkcLgaNgTLSWxjCoyEFpKN_Y0xUoSaU6YZAmKu1kaToSreyEWNXR7tyO3-237mOkl72Z3PhtrcI', 'NIL');"发布于 2021-08-06 07:49:10
您的ps:lisp表单需要构造ps:ps应该转换的表单。所以:
CL-USER> (ps:ps (ps:lisp (cons 'ps:array (example))))
"[1, 2, 3];"https://stackoverflow.com/questions/68674366
复制相似问题