презентация. Строки. Является последовательностью символов. Каждый символ является символом Юникода в диапазоне от U0000 до Uffff
Скачать 151.21 Kb.
|
Строки в C# Строка в .NET (далее — string) является последовательностью символов. Каждый символ является символом Юникода в диапазоне от U+0000 до U+FFFF Характеристики:
Как задать строку в C#? string str = "Пример строки"; Объект типа string можно также создать из массива типа char. Например: char[] chararray = {'e', 'x', 'a', 'm', 'p', 'l', 'e’}; string str = new string(chararray); Как только объект типа string будет создан, его можно использовать везде, где только требуется строка текста, заключенного в кавычки. Примеры создания строк string s1 = "hello"; string s2 = null; string s3 = new String('a', 6); // результатом будет строка "aaaaaa" string s4 = new String(new char[]{'w', 'o', 'r', 'l', 'd'}); Конкатенация Конкатенация строк или объединение может производиться как с помощью операции +, так и с помощью метода Concat: string s1 = "hello"; string s2 = "world"; string s3 = s1 + " " + s2; // результат: строка "hello world" string s4 = String.Concat(s3, "!!!"); // результат: строка "hello world!!!" Console.WriteLine(s4); Метод Concat является статическим методом класса String, принимающим в качестве параметров две строки. Конкатенация Для объединения строк также может использоваться метод Join: string s5 = "apple"; string s6 = "a day"; string s7 = "keeps"; string s8 = "a doctor"; string s9 = "away"; string[] values = new string[] { s5, s6, s7, s8, s9 }; String s10 = String.Join(" ", values); // результат: строка "apple a day keeps a doctor away" Метод Join также является статическим. Использованная выше версия метода получает два параметра: строку-разделитель (в данном случае пробел) и массив строк, которые будут соединяться и разделяться разделителем. Сравнение строк Для сравнения строк применяется статический метод Compare: string s1 = "hello"; string s2 = "world"; int result = String.Compare(s1, s2); if (result<0) { Console.WriteLine("Строка s1 перед строкой s2"); } else if (result > 0) { Console.WriteLine("Строка s1 стоит после строки s2"); } else { Console.WriteLine("Строки s1 и s2 идентичны"); } // результатом будет "Строка s1 перед строкой s2" Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай - если строки равны, то возвращается число 0. СтрокиНад строками определены следующие операции:
СтрокиПерепреисваивание Строки можно целиком переприсваивать: string s1 = "Hello"; string s2 = s1; СтрокиОбъединение строк Можно объединять строки с помощью оператора +: string s1 = "orange"; string s2 = "red"; s1 += s2;Console.WriteLine(s1); // напечатается "orangered" Строковые объекты являются неизменяемыми: после создания их нельзя изменить. Все методы String и операторы C#, которые, как можно было бы представить, изменяют строку, в действительности возвращают результаты в новый строковый объект. . СтрокиПостоянство строк Строковые объекты являются неизменяемыми: после создания их нельзя изменить. Все методы String и операторы C#, которые, как можно было бы представить, изменяют строку, в действительности возвращают результаты в новый строковый объект. В примере, когда содержимое строк s1 и s2 объединяется в одну строку, две исходные строки не изменяются. Оператор += создает новую строку с объединенным содержимым. Этот новый объект присваивается переменной s1, а исходный объект, который был присвоен строке s1, освобождается для сборки мусора, поскольку ни одна переменная не содержит ссылку на него. СтрокиСравнения Самый простой способ сравнения двух строк — использовать операторы == и !=, осуществляющие сравнение с учетом регистра: string color1 = "red"; string color2 = "green"; string color3 = "red"; if (color1 == color3) Console.WriteLine("Строки равны"); if (color1 != color2) Console.WriteLine("Строки не равны"); Не допускается использование >,<,>=,<= для сравнения строк. Для строковых объектов существует метод CompareTo(), возвращающий целочисленное значение, зависящее от того, что одна строка может быть меньше (<), равна (==) или больше другой (>). При сравнении строк используется значение Юникода, при этом значение строчных букв меньше, чем значение заглавных. СтрокиДоступ к отдельным знакам Квадратные скобки [] служат для доступа к отдельным знакам в объекте string, но при этом возможен доступ только для чтения: string str = "test"; char x = str[2]; // x = 's'; СтрокиВ C# существуют два вида строковых констант:
СтрокиОбычные константы В обычных константах некоторые символы интерпретируются особым образом. Связано это, прежде всего, с тем, что необходимо уметь задавать в строке непечатаемые символы, такие, как, например, символ табуляции. Возникает необходимость задавать символы их кодом – в виде escape-последовательностей. Для всех этих целей используется комбинация символов, начинающаяся символом "\" - обратная косая черта. Это так называемые Escape-последовательности Строки
При этом возникают неудобства: например, при задании констант, определяющих путь к файлу, приходится каждый раз удваивать символ обратной косой черты. string path2 = "C:\\Users\\Mikant\\Documents"; Строки@-константы В @-константах все символы трактуются в полном соответствии с их изображением. Поэтому путь к файлу лучше задавать @-константой. Единственная проблема в таких случаях: как задать символ кавычки, чтобы он не воспринимался как конец самой константы. Решением является удвоение символа. string path1 = @"C:\Users\Mikant\Documents"; Строки
Строки
Строкиstring s6 = «РГппУ"; Console.WriteLine(s6.ToUpper()); // Напечатается РГППУ string s3 = "Visual C# Express"; string s5 = s3.Replace("C#", "Basic"); Сonsole.WriteLine(s5);// напечатается "Visual Basic Express” string s3 = "Visual C# Express"; string s4 = s3.Substring(7, 2); Console.WriteLine(s4);// напечатается "C#" Строкиchar razdelitel = ' ';string text = "Шла Саша по шоссе и сосала сушку";Console.WriteLine("Исходный текст: '{0}'", text);string[] words = text.Split(razdelitel);Console.WriteLine("{0} слов в тексте:", words.Length);В качестве разделителя может выступать массив символов.char[] delimiterChars = { ' ', ',', '.', ':', '\t' };string text = "one\ttwo three:four,five six seven";Console.WriteLine("Original text: '{0}'", text);string[] words = text.Split(delimiterChars);Console.WriteLine("{0} words in text:", words.Length);Как перевести всю строку в верхний/нижний регистр? Для этого используются методы ToUpper() и ToLower(): static void Main(string[] args) { string s = "Hello, World"; Console.WriteLine(s.ToUpper()); // выводит "HELLO, WORLD" Console.WriteLine(s.ToLower()); // выводит "hello, world" } Как проверить, содержит ли строка подстроку? Для проверки содержания подстроки строкой используется метод Contains(). Данный метод принимает один аргумент – подстроку. Возвращает True, если строка содержит подстроку, в противном случае – False. Пример: static void Main(string[] args) { string s = "Hello, World"; if (s.Contains("Hello")) Console.WriteLine("Содержит"); } Данная программа выводит слово "Содержит", так как "Hello, World" содержит подстроку "Hello". ДОСТУП К СИМВОЛАМ СТРОКИ
ИЗМЕНЕНИЕ КОНКРЕТНОГО СИМВОЛА В СТРОКЕ
Как найти индекс первого символа подстроки, которую содержит строка? Метод IndexOf() возвращает индекс первого символа подстроки, которую содержит строка. Данный метод принимает один аргумент – подстроку. Если строка не содержит подстроки, метод возвращает "-1". Пример: static void Main(string[] args) { string s = "Hello, World"; Console.WriteLine(s.IndexOf("H")); // 0 Console.WriteLine(s.IndexOf("World")); // 7 Console.WriteLine(s.IndexOf("Zoo")); // -1 } Как узнать, начинается/заканчивается ли строка указанной подстрокой? Для этого используются соответственно методы StartsWith() и EndsWith(), которые возвращают логическое значение. Пример: static void Main(string[] args) { string s = "Hello, World"; Console.WriteLine(s.StartsWith("Hello")); // True Console.WriteLine(s.StartsWith("World")); // False Console.WriteLine(s.EndsWith("World")); // True } Как обрезать строку, начиная с указанной позиции? Метод Remove() принимает один аргумент – позиция, начиная с которой обрезается строка: static void Main(string[] args) { string s = "Hello, World"; Console.WriteLine(s.Remove(5)); // удаляем все символы, начиная с 5 позиции, на экран выведется "Hello" Console.ReadLine(); } В метод Remove() можно передать и второй аргумент – количество обрезаемых символов. Remove(3, 5) – удалит из строки пять символов начиная с 3-го. Как получить подстроку из строки, начиная с указанной позиции? Для этого используется метод Substring(). Он принимает один аргумент – позиция, с которой будет начинаться новая подстрока: static void Main(string[] args) { string s = "Hello, World"; Console.WriteLine(s.Substring(7)); // получаем строку начиная с 7 позиции, выведет "World" } В метод Substring(), как в метод Remove() можно передать и второй аргумент – длина подстроки. Substring (3, 5) – возвратит подстроку длиной в 5 символов начиная с 3-й позиции строки. Как заменить в строке все подстроки указанной новой подстрокой? Метод Replace() принимает два аргумента – подстрока, которую нужно заменить и новая подстрока, на которую будет заменена первая: static void Main(string[] args) { string s = "Hello, World, Hello"; Console.WriteLine(s.Replace("Hello", "World")); //выведет "World, World, World" Console.ReadLine(); } Как преобразовать строку в массив символов? Метод ToCharArray() возвращает массив символов указанной строки: static void Main(string[] args) { string s = "Hello, World"; char[] array = s.ToCharArray(); // элементы массива – 'H', 'e', 'l', 'l’… } Применяется для посимвольной работы со строкой Как посчитать количество подстрок в строке? Метод IndexOf() string a = "bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla"; string b = "bla"; int count = 0, index = 0; while ((index = a.IndexOf(b, index) + 1) != 0) count++; Console.WriteLine(count); foreach, in Оператор foreach выполняет оператор или блок операторов для каждого элемента в экземпляре типа public static void Main() { Span foreach (int number in numbers) { Console.Write($"{number} "); } Console.WriteLine(); } |