Ruby 删除`\";`从弦轨4

Ruby 删除`\";`从弦轨4,ruby,string,ruby-on-rails-4,Ruby,String,Ruby On Rails 4,我有一些参数,比如: params[:id]= "\"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6\"" 我希望得到如下预期结果: "ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6" 我该怎么做?您可以使用gsub: "\"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6\"".gsub("\"", "") => "ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6" 或者,如@Ste

我有一些参数,比如:

params[:id]= "\"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6\""
我希望得到如下预期结果:

"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6"

我该怎么做?

您可以使用
gsub

"\"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6\"".gsub("\"", "")
=> "ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6"
或者,如@Stefan所述,
删除

"\"ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6\"".delete("\"")
=> "ebfd11a9-3aa4-415a-ba72-1b6796ea1bf6"

如果这是JSON数据,很可能是这种格式:

JSON.load(params[:id])

这将处理其中有转义字符串或参数是数组的情况。

只需使用tr

params[:id].tr!("\"","")
tr!!也将更改主字符串

如果不想更改主字符串,请使用:

params[:id].tr("\"","")

谢谢Ilya

最好使用不带感叹号的
tr
,除非您想修改源代码stringRails应该自动解析JSON数据。它只能通过POST来完成。如果这是通过GET实现的,它将不会经过相同的处理程序,并且很容易使用错误序列化的查询参数进行AJAX调用。
JSON.load(params[:id])
在这种特定情况下会有所帮助,但如果数据输入正确,则会导致分析错误。@Stefan如果数据输入正确,则此问题不会出现在堆栈溢出上。这可以更好地处理更奇特的情况,但不会降低性能。其他参数会降级,但会损坏更复杂的参数。至于哪一个更好,这是个掷硬币的问题。你是对的,但我不确定你的方式是否正确。我不认为其他人处理得更好(盲目删除字符很容易损坏数据)。我只是认为你不应该定制一个API来处理无效的请求或数据。这些数据来自哪里,即谁提出了请求?你也可以使用
delete
删除单个字符,它比
gsub
的开销要小。