我有一个包含`\ x00 \ x07`的字符串如何删除它

时间:2014-08-15 08:33:18

标签: ruby

我有一个字符串

  

“\ X00 \ X00 \ X007 {\” 请求\ “:\” Cameralogout \ “\ ”响应\“:\” 无效   请求\ “}”

我想将字符串清理成

"{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}"

如何编写一般情况来过滤内容以\x开头?

1 个答案:

答案 0 :(得分:1)

如果\x##是真正的文字,请使用string.gsub(/\\x\d+/, "")

> t = "\\x00\\x00\\x007{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}"
=> "\\x00\\x00\\x007{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}
string.gsub(/\\x[\da-f]+/i, "")
=> "{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}" 
另一方面,

string.sub(/^[^{]*/, "")会删除第一个{之前的所有内容:

> t = "\x00\x00\x007{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}"
=> "\u0000\u0000\u00007{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}"
> t.sub(/^[^{]*/, "")
=> "{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}"

要仅删除\x00\x07(非文字),请使用string.gsub(/\x00|\x07/, "")string.gsub(/[\x00\x07]/, "")

> t = "\x00\x00\x07{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}"
=> "\u0000\u0000\a{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}"
> t.gsub(/\x00|\x07/, "")
=> "{\"request\":\"Cameralogout\",\"response\":\"Invalid request\"}"