|
| 1 | +using System.Text; |
| 2 | + |
| 3 | +Console.WriteLine("-----------------String Length-----------------"); |
| 4 | + |
| 5 | +const string testStr = "I love C#!"; |
| 6 | + |
| 7 | +Console.WriteLine(testStr.Length); // 10 (длина строки, то есть, количество символов в ней) |
| 8 | + |
| 9 | +//testStr.Length = 9; // Свойство "Length" доступно только для чтения |
| 10 | + |
| 11 | + |
| 12 | +Console.WriteLine("-----------------StringBuilder Length-----------------"); |
| 13 | + |
| 14 | +var strBuilder = new StringBuilder("I love C#!"); // Создание объекта "StringBuilder" с помощью конструктора |
| 15 | + |
| 16 | +Console.WriteLine(strBuilder); // I love C#! |
| 17 | +Console.WriteLine(strBuilder.Length); // 10 |
| 18 | + |
| 19 | +strBuilder.Length = 6; // В объекте "StringBuilder" свойство "Length" доступно как на чтение, так и на запись |
| 20 | + |
| 21 | +Console.WriteLine(strBuilder); // I love |
| 22 | +Console.WriteLine(strBuilder.Length); // 6 |
| 23 | + |
| 24 | +strBuilder.Length = 10; |
| 25 | + |
| 26 | +Console.WriteLine(strBuilder); // I love |
| 27 | +Console.WriteLine(strBuilder.Length); // 10 |
| 28 | + |
| 29 | + |
| 30 | +Console.WriteLine("-----------------String Indexer-----------------"); |
| 31 | + |
| 32 | +char firstSymbol = testStr[0]; // Получение первого символа |
| 33 | +Console.WriteLine(firstSymbol); // I |
| 34 | + |
| 35 | +char lastSymbol = testStr[9]; // Получение 10-го символа |
| 36 | +Console.WriteLine(lastSymbol); // ! |
| 37 | + |
| 38 | +lastSymbol = testStr[^1]; // Получение последнего символа |
| 39 | +Console.WriteLine(lastSymbol); // ! |
| 40 | + |
| 41 | +//Console.WriteLine(testStr[10]); // System.IndexOutOfRangeException, так как символа с индексом 10 не существует |
| 42 | + |
| 43 | +Console.WriteLine("-----------------StringBuilder Indexer-----------------"); |
| 44 | + |
| 45 | +strBuilder = new StringBuilder("I love C#!"); |
| 46 | + |
| 47 | +strBuilder[8] = '+'; // Меняем символ по индексу 8 на '+' (в объекте "StringBuilder" индексатор доступен как на чтение, так и на запись) |
| 48 | +Console.WriteLine(strBuilder); // I love C+! |
| 49 | + |
| 50 | +strBuilder.Insert(9, '+'); // Вставляем символ '+' по индексу 9 |
| 51 | +Console.WriteLine(strBuilder); // I love C++! |
| 52 | + |
| 53 | + |
| 54 | +Console.WriteLine("-----------------Substring-----------------"); |
| 55 | + |
| 56 | +Console.WriteLine(testStr[2..]); // love C#! (извлекаем подстроку, начиная с символа под индексом 2 и до конца исходной строки - то же самое, что и "testStr.Substring(2)") |
| 57 | +Console.WriteLine(testStr.Substring(2, 4)); // love (извлекаем подстроку, начиная с символа под индексом 2 и длинной в 4 символа) |
| 58 | +Console.WriteLine(testStr[2..6]); // love (извлекаем подстроку, начиная с символа под индексом 2 и заканчивая символом под индексом 6 не включительно) |
| 59 | + |
| 60 | + |
| 61 | +Console.WriteLine("-----------------Trim-----------------"); |
| 62 | + |
| 63 | +string strWithEdgeSpaces = "\t I love C#! \n"; |
| 64 | +Console.WriteLine($"'{strWithEdgeSpaces}'"); |
| 65 | +Console.WriteLine($"'{strWithEdgeSpaces.Trim()}'"); // 'I love C#!' (отсекаем пробельные символы в начале и в конце) |
| 66 | + |
| 67 | + |
| 68 | +Console.WriteLine("-----------------Split-----------------"); |
| 69 | + |
| 70 | +string[] words = "Hello, how are you?".Split(' '); // Разбиаем строку на подстроки по пробелу |
| 71 | +string[] chunks = "one, two, three".Split(','); // Разбиаем строку на подстроки по запятой |
| 72 | + |
| 73 | + |
| 74 | +Console.WriteLine("-----------------string.Empty-----------------"); |
| 75 | + |
| 76 | +string emptyStr = string.Empty; // Объявление пустой строки |
| 77 | +string emptyStr2 = ""; // То же самое, что и выше, но другим способом |
| 78 | + |
| 79 | +Console.WriteLine(emptyStr == emptyStr2); // True (строки равны между собой посимвольно) |
| 80 | +Console.WriteLine(object.ReferenceEquals(emptyStr, emptyStr2)); // True (ссылки указывают на один и тот же объект в памяти) |
| 81 | + |
| 82 | +// Использование пустой строки как стартовой точки при собирании конечной строки из нескольких частей |
| 83 | +// string target = ""; |
| 84 | +// if ( /* something */ ) |
| 85 | +// { |
| 86 | +// target += "something"; |
| 87 | +// } |
| 88 | +// if ( /* something else */ ) |
| 89 | +// { |
| 90 | +// target += "something else"; |
| 91 | +// } |
| 92 | + |
| 93 | +// Сделать что-то, если строка не пустая |
| 94 | +if (emptyStr != string.Empty) |
| 95 | +{ |
| 96 | + // Do something |
| 97 | +} |
| 98 | + |
| 99 | + |
| 100 | +Console.WriteLine("-----------------string.IsNullOrEmpty-----------------"); |
| 101 | + |
| 102 | +string nullStr = null; // Присваивание строке значения "null" |
| 103 | + |
| 104 | +Console.WriteLine(string.IsNullOrEmpty(emptyStr)); // True |
| 105 | +Console.WriteLine(string.IsNullOrEmpty(nullStr)); // True |
| 106 | +Console.WriteLine(string.IsNullOrEmpty(testStr)); // False |
| 107 | + |
| 108 | + |
| 109 | +Console.WriteLine("-----------------string.IsNullOrWhiteSpace-----------------"); |
| 110 | + |
| 111 | +Console.WriteLine(string.IsNullOrWhiteSpace(emptyStr)); // True |
| 112 | +Console.WriteLine(string.IsNullOrWhiteSpace(nullStr)); // True |
| 113 | +Console.WriteLine(string.IsNullOrWhiteSpace(" \t \n ")); // True |
| 114 | +Console.WriteLine(string.IsNullOrWhiteSpace(testStr)); // False |
| 115 | + |
| 116 | + |
| 117 | +Console.WriteLine("-----------------string.Join-----------------"); |
| 118 | + |
| 119 | +string[] cities = ["Moscow", "New York", "Paris", "London"]; // Объявление массива строк |
| 120 | + |
| 121 | +string citiesString = string.Join(", ", cities); // Собираем массив в одну строку с разделителем ", " |
| 122 | +Console.WriteLine(citiesString); // Moscow, New York, Paris, London |
| 123 | + |
| 124 | + |
| 125 | +Console.WriteLine("-----------------ToString-----------------"); |
| 126 | + |
| 127 | +Display("Some string"); // Some string |
| 128 | +Display(strBuilder); // I love C++! |
| 129 | +Display(12); // 12 |
| 130 | + |
| 131 | +// Метод принимает объект типа "object", что означает, что в него можно передать объект любого типа, |
| 132 | +// так как все типы C# неявно наследуются от "object" |
| 133 | +static void Display(object input) |
| 134 | +{ |
| 135 | + Console.WriteLine(input); |
| 136 | +} |
0 commit comments