Строка в Unicode в C # - PullRequest
       18

Строка в Unicode в C #

0 голосов
/ 22 июня 2010

Я хочу использовать Unicode в моем коде. Мое значение Unicode - 0100, и я добавляю строку Unicode \u со своим значением. Когда я использую строку myVal="\u0100", она работает, но когда я использую, как показано ниже, она не работает. Значение выглядит как "\\u1000";. Как мне решить эту проблему?

Я хочу использовать его, как показано ниже, потому что значение Unicode может иногда меняться.

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

1 Ответ

3 голосов
/ 22 июня 2010

Здесь есть пара проблем. Во-первых, @ "\ u" на самом деле является буквальной строкой "\ u" (также может быть представлено как "\ u").

Другая проблема заключается в том, что вы не можете создать строку описанным способом, поскольку «\ u» не является допустимой строкой. Компилятор ожидает, что значение будет следовать за \ u (например, \ u0100), чтобы определить, каким должно быть закодированное значение.

Вы должны иметь в виду, что строки в .NET являются неизменяемыми, что означает, что когда вы смотрите на то, что происходит за кулисами, с вашим составным примером (`@" \ u "+" 0100 "), вот что на самом деле происходит:

  1. Создать строку "\ u"
  2. Создать строку "0100"
  3. Создать строку "\ u0100"

Итак, у вас есть три строки в памяти. Для того, чтобы это произошло, все строки должны быть действительными.

Первый вариант, который приходит на ум при обработке этих значений, заключается в том, чтобы фактически проанализировать их как целые, а затем преобразовать их в символы. Что-то вроде:

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

Что даст вам единственное значение символа Юникод. Оттуда вы можете добавить его в строку или преобразовать в строку, используя ToString().

...