Преобразование из строки в us-ascii на c#

#c# #encoding #ascii

#c# #кодирование #ascii

Вопрос:

Я хочу преобразовать строку типа «123» в строку типа «u0031 u0032 u0033». Как я могу это сделать в .NET? Например: обратное преобразование:

 Encoding enc = Encoding.GetEncoding("us-ascii",
                                          new EncoderExceptionFallback(),
                                          new DecoderExceptionFallback());
            byte[] by = enc.GetBytes(s);
            string ans = enc.GetString(by);
            return ans;
  

Ответ №1:

Строки в .NET уже являются Unicode, поэтому нет необходимости конвертировать их из Unicode в Unicode.

Если вы хотите вывести строку, экранированную в Юникоде, попробуйте это:

 string ans = string.Concat(s.Select(c => string.Format("\u{0:x4}", (int)c)).ToArray());
  

Результат:

 u0031u0032u0033
  

Посмотрите, как это работает онлайн: ideone

В .NET 4.0 вы можете опустить вызов ToArray .

Ответ №2:

 string ans = Regex.Replace(s, ".", m => String.Format(@"u{0:x4}", (int)m.Value[0]));