簡體   English   中英

Ruby從字符串中刪除“ \\”`?

[英]Ruby remove `\"` from a string?

如何從字符串中刪除\\"

例:

'"\"asdasd"\"'.gsub('\"', '') # => "\"asdasd\""

為什么未刪除\\"

它已被刪除。 輸出中的\\"不是反斜杠,后跟雙引號,只是轉義了雙引號字符,因為inspect字符串打印在雙引號中。如果嘗試打印字符串,它將顯示為:

"asdasd"

對此進行一些擴展: '"\\"asdasd"\\"' (也可以使用雙引號將其寫為"\\"\\\\\\"asdasd\\"\\\\\\"" )是一個包含雙引號的字符串,后跟一個反斜杠,再跟一個雙引號,然后是asdasd,再跟一個雙引號,再跟一個反斜杠,再跟一個雙引號。

您對gsub調用會刪除兩個反斜杠和雙引號。 結果為"\\"asdasd\\"" ,也可以寫為'"asdasd"'並且是一個包含雙引號,后跟asdasd和后跟雙引號的字符串。 因此,刪除了反斜杠雙引號,但沒有刪除簡單的雙引號。 我認為這是預期的行為。

在ruby中,特殊符號在轉換為字符串時以反斜杠開頭。 "\\"\\"\\\\\\"

勾選這個你就會明白

'"\"asdasd"\"'                               # => "\"\\\"asdasd\"\\\""
'"\"asdasd"\"'.gsub("\\", '')                # => "\"\"asdasd\"\""
'"\"asdasd"\"'.gsub("\\", '').gsub("\"", '') # => "asdasd"

這怎么樣 ?

str = '"\"asdasd"\"'
p str[/\w+/] # => "asdasd"

它確實刪除了它們。 這是更改前inspect字符串的樣子:

'"\"asdasd"\"'               # => "\"\\\"asdasd\"\\\""

之后:

'"\"asdasd"\"'.gsub('\"','') # => "\"asdasd\""

因此,它之前有一些反斜杠引號序列。 現在,它僅帶有引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM