在c#中,如果我不知道最后一个字符,后面的字符或者在转义字符前面是否有任何字符,我怎么能按字面意思"\\b"
转换为字面"\b"
,或者多个转义字符?
答案 0 :(得分: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);
答案 1 :(得分:0)
如果不知道“\ b”之前出现的字符,就无法做到这一点。
在这种特殊情况下,此字符串将被解析为"\b"
,因为转义序列'\\'
被读取为'\'
。
但是,如果"\"
之前还有另一个"\\b"
,则会得到不同的结果。
例如,"\\\b"
将被解析为两个字符:"\"
和"\b"
。
这并不直接回答您的问题,但如果您不熟悉C#中的逐字字符串文字,则可能需要查找它们。您可以通过在@符号前面添加字符串文字作为逐字字符串文字。这告诉编译器忽略转义序列(doublequotes除外)并完全按原样解析字符串。
答案 2 :(得分: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))