Лучший отвечающий
С#, Надстрочный формат записи символа, Продолжение.

Вопрос
-
Всем привет и с Новым годом!
Продолжение темы.
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 -
Да, это работает!
Лилия, как всегда, большое спасибо!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