HTML Diff
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") &amp; &amp; someText.EndsWith ("text")) { Console.WriteLine (true); }</p>
32 <p>//Можно проверить, с чего начинается или чем кончается строка string someText = "Some text"; if (someText.StartsWith ("Some") &amp; &amp; 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>