none
С#, Надстрочный формат записи символа, Продолжение. RRS feed

  • Вопрос

  • Всем привет и с Новым годом!

    Продолжение темы.

    public void Test ()
    { A:;
    string a= char.ConvertFromUtf32 ( 176 ); // °
    string b= char.ConvertFromUtf32 ( 39 );  // ′
    string c= char.ConvertFromUtf32 ( 34 );  // "
    string q= "56° 42′ 52\"";
    string [] s = q.Split (a[0], b[0], c[0]);
    MessageBox.Show ( a[0] + "\n" + b[0] + "\n" + c[0] );
    MessageBox.Show ( s[0] + "\n" + s[1] + "\n" + s[2] );
    goto A;
    }

    Проблема в том, что Split не до конца отрабатывает,
    Печатает
    56
    42′ 52







    • Изменено QazRdx 5 января 2021 г. 8:10
    5 января 2021 г. 7:55

Ответы

  • Простите, думала просто угадала символ с первого взгляда((( Этот символ имеет код 8242. Вот провела несколько опытов с вашим кодом, может чего полезного есть:

                //string[] splt = { "° ", "′ ", "\" ", "°", "′", "\"" };
                string[] splt = { char.ConvertFromUtf32(176), char.ConvertFromUtf32(8242), char.ConvertFromUtf32(34) };
                string q = "56° 42′ 52\"";
                string[] s = q.Split(splt, StringSplitOptions.RemoveEmptyEntries);
                var res = string.Join("\n", s);
                MessageBox.Show(res);
    Строка с комментом - это попытка съесть лишние пробелы, а второй параметр для Split убрать пустые строки, но если это нужно, чтоб кавычка не создавала пустой элемент.

    • Помечено в качестве ответа QazRdx 5 января 2021 г. 15:28
    5 января 2021 г. 14:18
  • Странно должно работать...

    MessageBox.Show(q.IndexOf(/*"′"*/char.ConvertFromUtf32(8242)).ToString());
    Рада, что могу быть полезной)))


    • Помечено в качестве ответа QazRdx 5 января 2021 г. 19:51
    5 января 2021 г. 18:04

Все ответы

  • А вы уверены, что там 39, а не 180? ведь 39 это прямая сверху вниз кавычка, а вам нужна одиночная справа налево...

    5 января 2021 г. 10:26
  • Лилия, привет!
    И так тоже не получается.
    Похоже, это - глюк.
    Причем печатает, а значит видит эту кавычку,
    но почему-то не чувствует ее как разделитель в строке.
    Более того не работает даже определение индекса и
    замена этого символа другим -
    int I = q.IndexOf (b[0]);
    q = q.Replace (b[0], '!' );
    5 января 2021 г. 10:56
  • Простите, думала просто угадала символ с первого взгляда((( Этот символ имеет код 8242. Вот провела несколько опытов с вашим кодом, может чего полезного есть:

                //string[] splt = { "° ", "′ ", "\" ", "°", "′", "\"" };
                string[] splt = { char.ConvertFromUtf32(176), char.ConvertFromUtf32(8242), char.ConvertFromUtf32(34) };
                string q = "56° 42′ 52\"";
                string[] s = q.Split(splt, StringSplitOptions.RemoveEmptyEntries);
                var res = string.Join("\n", s);
                MessageBox.Show(res);
    Строка с комментом - это попытка съесть лишние пробелы, а второй параметр для Split убрать пустые строки, но если это нужно, чтоб кавычка не создавала пустой элемент.

    • Помечено в качестве ответа QazRdx 5 января 2021 г. 15:28
    5 января 2021 г. 14:18
  • Да, это работает!
    Лилия, как всегда, большое спасибо!
    • Помечено в качестве ответа QazRdx 5 января 2021 г. 15:28
    • Снята пометка об ответе QazRdx 5 января 2021 г. 15:28
    5 января 2021 г. 15:28
  • Занятное дело!
    Код 8242 работает, но не полностью -
    замена символа - да,
    а вот определение индекса - нет.
    Но мне, в принципе, этого достаточно...
    Еще раз спасибо!
    5 января 2021 г. 15:52
  • Странно должно работать...

    MessageBox.Show(q.IndexOf(/*"′"*/char.ConvertFromUtf32(8242)).ToString());
    Рада, что могу быть полезной)))


    • Помечено в качестве ответа QazRdx 5 января 2021 г. 19:51
    5 января 2021 г. 18:04
  • MessageBox.Show ( q.IndexOf ( char.ConvertFromUtf32(8242)).ToString());
    - говорит "-1".
    Ну, да бог с ним...
    5 января 2021 г. 19:22
  • Извиняюсь, накладочка вышла...
    Все работает.
    5 января 2021 г. 19:51