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

时间:2012-02-07 07:42:03

标签: string haskell

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

当我打印此答案时Output :"<a href=\"www.test.com\">testing</a>" 我想知道为什么额外的\正在打印。 \"假设是双引号的转义码。再次打印\"。我想知道为什么会发生这种情况,并且有没有办法将"作为字符串...?

concat函数

stringConcat::[String]->String 
stringConcat xs= concat xs 

3 个答案:

答案 0 :(得分:19)

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

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

> putStrLn (show "I said \"hello\".")
"I said \"hello\"."

因此,如果您不想这样做,请不要使用show

> putStrLn "I said \"hello\"."
I said "hello".

答案 1 :(得分:6)

不要show字符串。

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

另外,stringConcat是什么?

答案 2 :(得分:1)

你为什么不试试这个

let ans = stringConcat ["<a href=","'",str,"'",">",strr,"</a>"]