C#で、エスケープ文字を変換して文字列として可視化したいと考えております。
C#
1string str = "12.5.0\0\0\0\0\0\0\u0002\0\0\u0080"; 2// 便宜上の記述であり、実際は既に変数に値が入っていて直接リテラルは触れません。 3 4Console.WriteLine(str); 5 6// 出力結果 7「12.5.0 」 8 9// 変換処理 10str = str.Replace("\0", "\0"); 11str = str.Replace("\u0002", "\u0002"); 12str = str.Replace("\u0080", "\u0080"); 13Console.WriteLine(str); 14 15// 出力結果 16「12.5.0\0\0\0\0\0\0\u0002\0\0\u0080」
上記のように、変換をして出力結果として表示したいと考えていますが、
エスケープ文字全パターンをスマートに変換する方法が思いつきません。
(Console.Write()や、StreamWriter.Write()などを想定しています。)
例えば、"あ\u3042"の場合は "あ\u3042" に変換すれば「\u3042」の部分が出力結果として表示できると考えております。
文字列にエスケープ文字を埋め込むには?[C#/VB/WPF]- @IT atmarkIT
上記の記事を参考にエスケープ文字を確認しました。
ごり押しで、"\u0000" ~ "\uFFFF"を配列に全部入れてループでReplaceなんて考えてやってみましたが
コード自体がとんでもない分量になりIDE自体が重いうえに、一回一回この量のループを走らせるとすさまじく効率の悪い処理でした。
"\U00000000" ~ "\UFFFFFFFF"についてはもう考えたくなくなりました。
正規表現なんかでうまくできないかなぁと思いつつも思いつかない状態です。
良い方法があればお教えいただきたいです。
回答3件
あなたの回答
tips
プレビュー