In c#, how could I turn literally "\\b"
into literally "\b"
, assuming I did not know the last character, the characters after or if there were any characters in front of the escaped ones, or multiple escaped characters?
質問する
86 次
3 に答える
1
私はあなたの正確な要件を100%確信していませんが、あなたに取り掛かるには、RegexUnescapeを使用"\\b"
してみることができます。"\b"
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"
の 2 つの文字として解析されます。"\"
"\b"
これはあなたの質問に直接答えるものではありませんが、C# の逐語的な文字列リテラルに慣れていない場合は、それらを調べることをお勧めします。@ 記号を先頭に付けることで、文字列リテラルをそのままの文字列リテラルとしてマークできます。これは、エスケープ シーケンス (二重引用符を除く) を無視し、文字列をそのまま解析するようにコンパイラに指示します。
于 2013-02-05T17:44:45.507 に答える
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))
于 2013-02-05T17:52:15.410 に答える