在 c# 中,假设我不知道最后一个字符、转义字符之后的字符或前面是否有任何字符,或者多个转义字符,我怎么能从字面上"\\b"
变成字面意思?"\b"
问问题
86 次
3 回答
1
我不能 100% 确定您的确切要求,但要了解"\\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);
于 2013-02-06T09:52:32.383 回答
0
在不知道“\b”之前出现的字符的情况下,您无法做到这一点。
在这种特殊情况下,该字符串将被解析为,"\b"
因为转义序列'\\'
被读取为'\'
.
但是,如果有另一个"\"
前面"\\b"
的,你会得到不同的结果。
例如,"\\\b"
将被解析为两个字符:"\"
和"\b"
.
这不会直接回答您的问题,但如果您不熟悉 C# 中的逐字字符串文字,您可能需要查找它们。您可以通过在字符串前面加上 @ 符号来将字符串文字标记为逐字字符串文字。这告诉编译器忽略转义序列(双引号除外)并完全按原样解析字符串。
于 2013-02-05T17:44:45.507 回答
0
只需简单的 String.Replace 就足够了:
var source = @"foo\\bbar";
var result = source.Replace(@"\\b", @"\b")
如果您不知道“b”部分 - 使用正则表达式版本的替换,它允许您检查匹配本身:
var result = Regex.Replace(source, @"\\\\.",
match => match.Value .Substring(1))
于 2013-02-05T17:52:15.410 回答