"\u"
文字列を連結し"a string"
て「\u0000」を取得するにはどうすればよいですか?
私のコードは 2 つのバックスラッシュを作成します。
string a = @"\u" + "0000"; //ends up being "\\\u0000";
私の理解が正しければ、任意の Unicode 値 (4 桁の 16 進数) から 1 文字の文字列を作成したいと考えていると思います。したがって、文字列 "0000" が与えられた場合、それを文字列 "\u0000"、つまり単一の文字を含む文字列に変換する必要があります。
これがあなたが望むものだと思います:
string f = "0000"; // Or whatever
int n = int.Parse(f, NumberStyles.AllowHexSpecifier);
string s = ((char) n).ToString();
結果の文字列s
は"\u0000"
であり、これを検索に使用できます。
(Thomas Levesque によって提案された修正を含む。)
エスケープ シーケンス\uXXXX
は言語の構文の一部であり、1 つの Unicode 文字を表します。対照的に、@"\u"
と"0000"
は 2 つの異なる文字列で、合計 6 文字です。それらを連結しても、魔法のように単一の Unicode エスケープにはなりません。Unicode コード ポイントを 1 文字の文字列に変換する場合は、次のようにします。
char.ConvertFromUtf32(strUnicodeOfMiddleChar).ToString()
ところで、使用しないでください== true
。それは冗長です。
以下の行は、2 つのバックスラッシュを作成します。
string a = @"\u" + "0000"; //a ends up being "\\u0000";
いいえ、そうではありません。デバッガーは "\" を "\" と表示します。これは、C# でバックスラッシュを記述する方法であるためです (文字列の前に @ を付けない場合)。その文字列を印刷すると\u0000
、 ではなくが表示されます\\u0000
。
いいえ、その文字列には実際に 1 つのバックスラッシュが含まれています。コンソールに出力すると、それが表示されます。
あなたのキャラクターを正しく脱出してください!!
両方:
// I am an escaped '\'.
string a = "\\u" + "0000";
と:
// I am a literal string.
string a = @"\u" + "0000";
うまくいきます。しかし、私はここで手足を出しています。あなたは Unicode 文字と 16 進値をエスケープしようとしていると思います。そのためには、次のものが必要です。
// I am an escaped Unicode Sequence with a Hex value.
char a = '\uxxxx';