[英]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.