0

在 c# 中,假设我不知道最后一个字符、转义字符之后的字符或前面是否有任何字符,或者多个转义字符,我怎么能从字面上"\\b"变成字面意思?"\b"

4

3 回答 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 回答