转义代码\"打印两个\".无论如何要把一个"插入一个字符串.?

Gih*_*han 9 string haskell

let ans = stringConcat ["<a href=","\"",str,"\"",">",strr,"</a>"]
                putStr ("\nOutput :" ++show (ans))
Run Code Online (Sandbox Code Playgroud)

当我打印这个答案时,Output :"<a href=\"www.test.com\">testing</a>" 我想知道为什么额外\打印.\"假设是双引号的转义码.再次打印两者\".我想知道为什么会发生这种情况,是否有任何方法可以将"一个字符串放在一个字符串中?

concat功能

stringConcat::[String]->String 
stringConcat xs= concat xs 
Run Code Online (Sandbox Code Playgroud)

ham*_*mar 19

是的,\"是双引号的正确转义码,因此该字符串ans包含您所期望的双引号.

问题是你正在使用show,这是一个显示像Haskell代码中出现的值的函数,这意味着必须转义带有双引号的字符串.

> putStrLn (show "I said \"hello\".")
"I said \"hello\"."
Run Code Online (Sandbox Code Playgroud)

所以如果你不想那样,就不要使用show:

> putStrLn "I said \"hello\"."
I said "hello".
Run Code Online (Sandbox Code Playgroud)


iva*_*anm 7

不要show一个字符串.

let ans = stringConcat ["<a href=","\"",str,"\"",">",strr,"</a>"]
putStr ("\nOutput :" ++ ans)
Run Code Online (Sandbox Code Playgroud)

还有,是什么stringConcat