0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#Руководства</a></p>
1
<p><a>#Руководства</a></p>
2
<ul><li>19 июн 2019</li>
2
<ul><li>19 июн 2019</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Регулярные выражения - боль, с которой приходится жить каждому разработчику. К счастью, C# даёт возможность их почти не использовать.</p>
4
</ul><p>Регулярные выражения - боль, с которой приходится жить каждому разработчику. К счастью, C# даёт возможность их почти не использовать.</p>
5
<p> vlada_maestro / shutterstock</p>
5
<p> vlada_maestro / shutterstock</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
7
<p>Программистам часто приходится работать со строками независимо от языка. Однако для этого не всегда есть хорошие инструменты, поэтому приходится прибегать к использованию регулярных выражений - а это не самое приятное занятие.</p>
7
<p>Программистам часто приходится работать со строками независимо от языка. Однако для этого не всегда есть хорошие инструменты, поэтому приходится прибегать к использованию регулярных выражений - а это не самое приятное занятие.</p>
8
<p>Исключение - язык<a>C#</a>, огромные возможности которого позволяют почти всегда спокойно без них обойтись.</p>
8
<p>Исключение - язык<a>C#</a>, огромные возможности которого позволяют почти всегда спокойно без них обойтись.</p>
9
<p><strong>1.<a>Как работать со строками в C#:</a></strong></p>
9
<p><strong>1.<a>Как работать со строками в C#:</a></strong></p>
10
<p>1.1<a>Складывание строк</a></p>
10
<p>1.1<a>Складывание строк</a></p>
11
<p>1.2<a>Экранирование кавычек и специальных символов</a></p>
11
<p>1.2<a>Экранирование кавычек и специальных символов</a></p>
12
<p>1.3<a>Как и зачем работать с пустыми строками</a></p>
12
<p>1.3<a>Как и зачем работать с пустыми строками</a></p>
13
<p>1.4<a>Поиск значений в строке</a></p>
13
<p>1.4<a>Поиск значений в строке</a></p>
14
<p>1.5<a>Изменение - замена символов и строк, смена регистра</a></p>
14
<p>1.5<a>Изменение - замена символов и строк, смена регистра</a></p>
15
<p>1.6<a>Форматирование</a></p>
15
<p>1.6<a>Форматирование</a></p>
16
<p><strong>2.<a>Оптимизация нагрузки с помощью класса StringBuilder</a></strong></p>
16
<p><strong>2.<a>Оптимизация нагрузки с помощью класса StringBuilder</a></strong></p>
17
<p><strong>3.<a>Заключение</a></strong></p>
17
<p><strong>3.<a>Заключение</a></strong></p>
18
<p>Нужный функционал представляет класс<em>string</em>. С его помощью можно создавать строки и проводить различные операции.</p>
18
<p>Нужный функционал представляет класс<em>string</em>. С его помощью можно создавать строки и проводить различные операции.</p>
19
<p>//Создание обычной строки //Текст должен находиться в двойных кавычках string text = "Live long"; string text1 = new String ("Text"); string text2 = new String ('O', 5); //Создание строки, в которой будет 5 букв O: OOOOO string text3 = new String (new char[] {'W', 'o', 'r', 'd'}); //Создание строки из массива //Одинарные кавычки используются для символов //char symbol = 'a';</p>
19
<p>//Создание обычной строки //Текст должен находиться в двойных кавычках string text = "Live long"; string text1 = new String ("Text"); string text2 = new String ('O', 5); //Создание строки, в которой будет 5 букв O: OOOOO string text3 = new String (new char[] {'W', 'o', 'r', 'd'}); //Создание строки из массива //Одинарные кавычки используются для символов //char symbol = 'a';</p>
20
<p>Вот что получится, если вывести все эти значения. Чтобы сократить количество кода в статье, здесь и далее не используются операторы вывода:</p>
20
<p>Вот что получится, если вывести все эти значения. Чтобы сократить количество кода в статье, здесь и далее не используются операторы вывода:</p>
21
<p>Строки можно складывать друг с другом - этот процесс называется конкатенацией.</p>
21
<p>Строки можно складывать друг с другом - этот процесс называется конкатенацией.</p>
22
<p>string textConcat = text + " and prosper!"; //Можно использовать оператор сложения string textConcat = text.Concat (" and prosper!"); //Также можно использовать метод Concat () //К строке можно добавлять данные других типов int num = 5; string numConcat = "Num: " + num; bool boolVal = true; string boolConcat = "Bool: " + boolVal; //Чтобы присвоить переменной строкового типа данные другого типа, их нужно преобразовать в строку //Для этого используйте метод ToString () string toString = num.ToString (); //Вместо оператора сложения можно использовать интерполяцию //Для этого поставьте символ $ перед открывающей кавычкой и укажите переменные внутри фигурных скобок string dollarSymbol = $"Num: {num}"; Console.WriteLine ("Length: {0}", textConcat.Length); //Длина строки</p>
22
<p>string textConcat = text + " and prosper!"; //Можно использовать оператор сложения string textConcat = text.Concat (" and prosper!"); //Также можно использовать метод Concat () //К строке можно добавлять данные других типов int num = 5; string numConcat = "Num: " + num; bool boolVal = true; string boolConcat = "Bool: " + boolVal; //Чтобы присвоить переменной строкового типа данные другого типа, их нужно преобразовать в строку //Для этого используйте метод ToString () string toString = num.ToString (); //Вместо оператора сложения можно использовать интерполяцию //Для этого поставьте символ $ перед открывающей кавычкой и укажите переменные внутри фигурных скобок string dollarSymbol = $"Num: {num}"; Console.WriteLine ("Length: {0}", textConcat.Length); //Длина строки</p>
23
<p>Вот что можно увидеть, если вывести это всё:</p>
23
<p>Вот что можно увидеть, если вывести это всё:</p>
24
<p>Некоторые символы в строке могут запутать компилятор. Например, если попробовать в тексте использовать двойную кавычку, компилятор решит, что это конец строки.</p>
24
<p>Некоторые символы в строке могут запутать компилятор. Например, если попробовать в тексте использовать двойную кавычку, компилятор решит, что это конец строки.</p>
25
<p>Чтобы использовать такие символы, их нужно экранировать - для этого ставьте перед ними знак обратного слэша.</p>
25
<p>Чтобы использовать такие символы, их нужно экранировать - для этого ставьте перед ними знак обратного слэша.</p>
26
<p>string singleQuote = "My name is Fred O’Connell."; //Одинарные кавычки можно использовать string doubleQuote = "He said: \"Hello! \""; //Экранированные двойные кавычки //Также слэши используются для вставки специальных символов. Например, переноса строки (\n) или табуляции (\t) string newLine = "Hello\nnew line!"; //Чтобы использовать обратный слэш в тексте, его тоже нужно экранировать string slash = "C:\\Windows\\"; //Если перед строкой поставить символ @, то компилятор автоматически экранирует все специальные символы string withoutSlash = @"C:\Windows\";</p>
26
<p>string singleQuote = "My name is Fred O’Connell."; //Одинарные кавычки можно использовать string doubleQuote = "He said: \"Hello! \""; //Экранированные двойные кавычки //Также слэши используются для вставки специальных символов. Например, переноса строки (\n) или табуляции (\t) string newLine = "Hello\nnew line!"; //Чтобы использовать обратный слэш в тексте, его тоже нужно экранировать string slash = "C:\\Windows\\"; //Если перед строкой поставить символ @, то компилятор автоматически экранирует все специальные символы string withoutSlash = @"C:\Windows\";</p>
27
<p>Вот что получится, если вывести эти переменные:</p>
27
<p>Вот что получится, если вывести эти переменные:</p>
28
<p>Иногда нужно использовать пустую строку или проверить, есть ли текст в переменной.</p>
28
<p>Иногда нужно использовать пустую строку или проверить, есть ли текст в переменной.</p>
29
<p>//Создание пустой переменной строкового типа string noValue; string emptyString = string.Empty; string nullString = null; string quoteString = ""; //Метод IsNullOrEmpty () позволяет проверить, есть ли что-нибудь в строке if (string.IsNullOrEmpty (emptyString)) { emptyString = "The string is null or empty!"; }</p>
29
<p>//Создание пустой переменной строкового типа string noValue; string emptyString = string.Empty; string nullString = null; string quoteString = ""; //Метод IsNullOrEmpty () позволяет проверить, есть ли что-нибудь в строке if (string.IsNullOrEmpty (emptyString)) { emptyString = "The string is null or empty!"; }</p>
30
<p>Вот что будет выведено:</p>
30
<p>Вот что будет выведено:</p>
31
<p>В C# можно найти позицию определенной подстроки или символа в тексте, проверить, с чего он начинается и чем кончается.</p>
31
<p>В C# можно найти позицию определенной подстроки или символа в тексте, проверить, с чего он начинается и чем кончается.</p>
32
<p>//Можно проверить, с чего начинается или чем кончается строка string someText = "Some text"; if (someText.StartsWith ("Some") & & someText.EndsWith ("text")) { Console.WriteLine (true); }</p>
32
<p>//Можно проверить, с чего начинается или чем кончается строка string someText = "Some text"; if (someText.StartsWith ("Some") & & someText.EndsWith ("text")) { Console.WriteLine (true); }</p>
33
<p>//Поиск положения определенного символа string indexText = "Hello, World! Hello, Sunshine!";</p>
33
<p>//Поиск положения определенного символа string indexText = "Hello, World! Hello, Sunshine!";</p>
34
<p>Console.WriteLine (indexText.IndexOf (', ')); //Поиск первого совпадения Console.WriteLine (indexText.LastIndexOf (', ')); //Поиск последнего совпадения</p>
34
<p>Console.WriteLine (indexText.IndexOf (', ')); //Поиск первого совпадения Console.WriteLine (indexText.LastIndexOf (', ')); //Поиск последнего совпадения</p>
35
<p>Console.WriteLine (indexText.IndexOf ("Sunshine")); //Можно искать индексы целых подстрок Console.WriteLine (indexText.IndexOf (', ', 7)); //Можно указать начало поиска Console.WriteLine (indexText.IndexOf (', ', 6, 5)); //Также можно указать количество символов, которые будут проверены //Если искомое значение не будет найдено, будет возвращено значение -1</p>
35
<p>Console.WriteLine (indexText.IndexOf ("Sunshine")); //Можно искать индексы целых подстрок Console.WriteLine (indexText.IndexOf (', ', 7)); //Можно указать начало поиска Console.WriteLine (indexText.IndexOf (', ', 6, 5)); //Также можно указать количество символов, которые будут проверены //Если искомое значение не будет найдено, будет возвращено значение -1</p>
36
<p>string[] sArray = indexText.Split (', '); //Создание массива подстрок из строки. В качестве аргумента принимается разделитель foreach (string s in sArray) { Console.WriteLine (s); }</p>
36
<p>string[] sArray = indexText.Split (', '); //Создание массива подстрок из строки. В качестве аргумента принимается разделитель foreach (string s in sArray) { Console.WriteLine (s); }</p>
37
<p>Вот что будет выведено в результате работы такого кода:</p>
37
<p>Вот что будет выведено в результате работы такого кода:</p>
38
<p>Строки можно редактировать - добавлять или удалять слова и символы, менять регистры, а также заменять одну подстроку другой:</p>
38
<p>Строки можно редактировать - добавлять или удалять слова и символы, менять регистры, а также заменять одну подстроку другой:</p>
39
<p>//Символы можно перевести в верхний или нижний регистр string lower = emptyString.ToLower (); string upper = emptyString.ToUpper ();</p>
39
<p>//Символы можно перевести в верхний или нижний регистр string lower = emptyString.ToLower (); string upper = emptyString.ToUpper ();</p>
40
<p>//Строку можно обрезать string sub1 = emptyString.Substring (5); //Начиная с 5 символа string sub2 = emptyString.Substring (1, 5); //5 символов, начиная с нулевого</p>
40
<p>//Строку можно обрезать string sub1 = emptyString.Substring (5); //Начиная с 5 символа string sub2 = emptyString.Substring (1, 5); //5 символов, начиная с нулевого</p>
41
<p>//Замена значения в тексте string errorText = "This si text. It si very short."; errorText = errorText.Replace ("si", "is"); //Замена всех si на is</p>
41
<p>//Замена значения в тексте string errorText = "This si text. It si very short."; errorText = errorText.Replace ("si", "is"); //Замена всех si на is</p>
42
<p>//Преобразование строки в массив символов char[] chars = text.ToCharArray ();</p>
42
<p>//Преобразование строки в массив символов char[] chars = text.ToCharArray ();</p>
43
<p>char char1 = text[2];</p>
43
<p>char char1 = text[2];</p>
44
<p>text = text.Trim (); //Удаление пробелов из начала и конца строки</p>
44
<p>text = text.Trim (); //Удаление пробелов из начала и конца строки</p>
45
<p>Вот каким будет вывод этих значений:</p>
45
<p>Вот каким будет вывод этих значений:</p>
46
<p>В C# есть возможность выбрать формат отображения строки:</p>
46
<p>В C# есть возможность выбрать формат отображения строки:</p>
47
<p>long number = 88005000522; //Номер Skillbox - звонок бесплатный Console.WriteLine (number.ToString ("# (###) ###-##-##"));</p>
47
<p>long number = 88005000522; //Номер Skillbox - звонок бесплатный Console.WriteLine (number.ToString ("# (###) ###-##-##"));</p>
48
<p>Вот что выведет такой код:</p>
48
<p>Вот что выведет такой код:</p>
49
<p>Схожие возможности предоставляет метод Format (), которые позволяет вывести значение в соответствии с одним из доступных форматов:</p>
49
<p>Схожие возможности предоставляет метод Format (), которые позволяет вывести значение в соответствии с одним из доступных форматов:</p>
50
<ul><li><strong>C / c</strong> - денежная единица (вывод зависит от единицы, указанной в настройках системы пользователя);</li>
50
<ul><li><strong>C / c</strong> - денежная единица (вывод зависит от единицы, указанной в настройках системы пользователя);</li>
51
<li><strong>D / d</strong> - целое число с минимальной длиной (если переданное число короче, в начале будут добавлены нули);</li>
51
<li><strong>D / d</strong> - целое число с минимальной длиной (если переданное число короче, в начале будут добавлены нули);</li>
52
<li><strong>E / e</strong> - экспоненциальное представление числа;</li>
52
<li><strong>E / e</strong> - экспоненциальное представление числа;</li>
53
<li><strong>F / f</strong> - дробное число с фиксированной точкой;</li>
53
<li><strong>F / f</strong> - дробное число с фиксированной точкой;</li>
54
<li><strong>G / g</strong> - выбор более короткого формата: E или F;</li>
54
<li><strong>G / g</strong> - выбор более короткого формата: E или F;</li>
55
<li><strong>N / n</strong> - другой вариант дробного числа с фиксированной точкой;</li>
55
<li><strong>N / n</strong> - другой вариант дробного числа с фиксированной точкой;</li>
56
<li><strong>P / p</strong> - отображение процентов;</li>
56
<li><strong>P / p</strong> - отображение процентов;</li>
57
<li><strong>X / x</strong> - отображение числа в шестнадцатеричной системе счисления.</li>
57
<li><strong>X / x</strong> - отображение числа в шестнадцатеричной системе счисления.</li>
58
</ul><p>Вот пример кода с их использованием:</p>
58
</ul><p>Вот пример кода с их использованием:</p>
59
<p>int id = 5; double sum = 100.0;</p>
59
<p>int id = 5; double sum = 100.0;</p>
60
<p>Console.WriteLine (string.Format ("{0:d5}", id)); Console.WriteLine (sum.ToString ("c2"));</p>
60
<p>Console.WriteLine (string.Format ("{0:d5}", id)); Console.WriteLine (sum.ToString ("c2"));</p>
61
<p>Вот что будет выведено:</p>
61
<p>Вот что будет выведено:</p>
62
<p>Хотя класс string и предоставляет огромный функционал, у него есть серьезный недостаток - переменные с текстом не редактируются, а удаляются и создаются с новым значением. Чем больше нужно провести операций со строкой, тем больше ресурсов потребляет приложение.</p>
62
<p>Хотя класс string и предоставляет огромный функционал, у него есть серьезный недостаток - переменные с текстом не редактируются, а удаляются и создаются с новым значением. Чем больше нужно провести операций со строкой, тем больше ресурсов потребляет приложение.</p>
63
<p>Поэтому, если необходимо неоднократно изменять строку, лучше использовать класс StringBuilder. Он предоставляет меньше возможностей, но позволяет значительно сэкономить ресурсы.</p>
63
<p>Поэтому, если необходимо неоднократно изменять строку, лучше использовать класс StringBuilder. Он предоставляет меньше возможностей, но позволяет значительно сэкономить ресурсы.</p>
64
<p>Чтобы работать с ним, подключите библиотеку<em>System.Text</em>:</p>
64
<p>Чтобы работать с ним, подключите библиотеку<em>System.Text</em>:</p>
65
<p>//Объявление экземпляра класса StringBuilder StringBuilder builder = new StringBuilder ("Hello, "); //В качестве аргумента можно указать максимальный объем занимаемой памяти</p>
65
<p>//Объявление экземпляра класса StringBuilder StringBuilder builder = new StringBuilder ("Hello, "); //В качестве аргумента можно указать максимальный объем занимаемой памяти</p>
66
<p>builder.Append ("World!“); //Конкатенация строки //Также существует метод AppendFormat (), который добавляет в конец строки форматированный текст builder.Replace ('.', ', '); //Замена точек на запятые</p>
66
<p>builder.Append ("World!“); //Конкатенация строки //Также существует метод AppendFormat (), который добавляет в конец строки форматированный текст builder.Replace ('.', ', '); //Замена точек на запятые</p>
67
<p>builder.Insert (5, "awe2“); //Вставка подстроки после пятой позиции</p>
67
<p>builder.Insert (5, "awe2“); //Вставка подстроки после пятой позиции</p>
68
<p>builder.Remove (5, 4); //Удаление 4 символов, начиная с пятой позиции</p>
68
<p>builder.Remove (5, 4); //Удаление 4 символов, начиная с пятой позиции</p>
69
<p>//Вывод строки, ее длины и занимаемой памяти Console.WriteLine ($"Text: {builder}\nLength: {builder.Length}\nCapacity: {builder.Capacity}");</p>
69
<p>//Вывод строки, ее длины и занимаемой памяти Console.WriteLine ($"Text: {builder}\nLength: {builder.Length}\nCapacity: {builder.Capacity}");</p>
70
<p>Вот что выведет программа:</p>
70
<p>Вот что выведет программа:</p>
71
<p>C# сокращает количество задач, в которых пришлось бы использовать регулярные выражения, - для многих целей достаточно вызывать обычные методы.</p>
71
<p>C# сокращает количество задач, в которых пришлось бы использовать регулярные выражения, - для многих целей достаточно вызывать обычные методы.</p>
72
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
72
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>