0

コードでUnicodeを使用したい。Unicode値は0100で、Unicode文字列\uを値に追加しています。文字列を使用するとmyVal="\u0100"動作しますが、以下のように使用すると動作しません。値はのようになり"\\u1000";ます。これを解決するにはどうすればよいですか?

Unicodeの値が異なる場合があるので、以下のように使用したいと思います。

string uStr=@"\u" + "0100";
4

1 に答える 1

3

ここにはいくつかの問題があります。1 つは、@"\u" が実際にはリテラル文字列 "\u" ("\u" と表すこともできます) であることです。

もう1つの問題は、「\ u」自体は有効な文字列ではないため、説明した方法で文字列を作成できないことです。コンパイラは、"\u" ("\u0100" など) の後に値が続くことを期待して、エンコードされた値がどうあるべきかを判断します。

.NETの文字列は不変であることを覚えておく必要があります。つまり、連結された例 (`@"\u"+"0100") で舞台裏で何が起こっているかを見ると、これが実際にハプニング:

  1. 文字列「\u」を作成します
  2. 文字列「0100」を作成します
  3. 文字列「\u0100」を作成します

したがって、メモリには 3 つの文字列があります。そのためには、すべての文字列が有効でなければなりません。

これらの値を処理するために頭に浮かぶ最初のオプションは、実際に整数として解析してから文字に変換することです。何かのようなもの:

var unicodeValue = (char)int.Parse("0100",System.Globalization.NumberStyles.AllowHexSpecifier);

これにより、単一の Unicode 文字値が得られます。そこから、文字列に追加するか、 を使用して文字列に変換できますToString()

于 2010-06-22T03:11:12.420 に答える