在c#中,我怎麼能把字面上的"\\b"
轉換爲字面意思"\b"
,假設我不知道最後一個字符,後面的字符或者是否有任何字符在轉義字符前面或多個轉義字符?「Rechapturing」轉義字符
0
A
回答
1
我不完全確定您的具體要求,但要將"\\b"
降至"\b"
您可以嘗試使用Regex Unescape。
var foo = @"\\b"; //The @ is important if you wish to keep things literal
var bar = System.Text.RegularExpressions.Regex.Unescape(foo);
0
如果不知道「\ b」之前出現的字符,則無法做到這一點。
在這種特殊情況下,該字符串將被解析爲"\b"
,因爲轉義序列'\\'
被讀爲'\'
。
但是,如果在"\\b"
前面有另一個"\"
,則會得到不同的結果。
例如,"\\\b"
將被解析爲兩個字符:"\"
和"\b"
。
這並不直接回答你的問題,但如果你不熟悉C#中的逐字字符串文字,你可能需要查看它們。您可以將字符串文字標記爲逐字符字符串文字,方法是用@符號對其進行預處理。這告訴編譯器忽略轉義序列(除了雙引號)並且完全按照原樣解析字符串。
0
只是簡單的應與string.replace足夠:
var source = @"foo\\bbar";
var result = source.Replace(@"\\b", @"\b")
如果你不知道「B」的一部分 - 使用Replace正則表達式版本,它允許您檢查比賽本身:
var result = Regex.Replace(source, @"\\\\.",
match => match.Value .Substring(1))
+0
你的正則表達式是接近的,但我必須使用長手的方法出於各種原因..'encoded = Regex.Replace(encoded,@「\\。」,delegate(Match m){return m.Value.Substring( 1);});'是非常接近的,因爲它消除了雙重轉義,但是單個斜線不會被替換。 使用'@「\\\\。」'找不到任何匹配,或者找到並替換爲雙重轉義(即不會更改) – Izzy
相關問題
- 1. 轉義字符
- 2. 轉義字符
- 3. 轉義字符,
- 4. 轉義字符
- 5. 轉義字符
- 6. 轉義字符
- 7. 將unicode轉義字符轉義爲普通字符串(沒有轉義字符)
- 8. 字符串轉義字符
- 9. 轉義字符XML轉換
- 10. 字符串轉義
- 11. Kivy轉義字符
- 12. XSLT轉義字符
- 13. Javascript轉義字符
- 14. SOQL轉義字符
- 15. 轉義HTML字符
- 16. XML轉義字符
- 17. HTML轉義字符
- 18. .NET轉義字符?
- 19. Dust.js轉義字符
- 20. 轉義NSURL字符
- 21. 轉義UNIX字符
- 22. BasicNameValuePair字符轉義
- 23. JSON轉義字符
- 24. JavaScriptSerializer轉義字符
- 25. 轉義字符 - \ xFF
- 26. PHP轉義字符
- 27. 轉義字符pypyodbc
- 28. SQL轉義字符
- 29. 製表符轉義字符?
- 30. 字符串文字/轉義
Unicode轉義序列有多個字符呢? – SLaks