Файл: Является последовательностью символов. Каждый символ является символом Юникода в диапазоне от U0000 до Uffff.pptx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 29.03.2024
Просмотров: 13
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
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);
Строки в C#
Строка в .NET (далее — string) является последовательностью символов. Каждый символ является символом Юникода в диапазоне от U+0000 до U+FFFF
Характеристики:
- Ссылочный тип;
- Может содержать значение null;
- Использование литералов (\n, \t и др)
Как задать строку в 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# существуют два вида строковых констант:
- обычные константы, которые представляют строку символов, заключённую в кавычки;
- @-константы, заданные обычной константой c предшествующим знаком @.
Строки
Обычные константы
В обычных константах некоторые символы интерпретируются особым образом. Связано это, прежде всего, с тем, что необходимо уметь задавать в строке непечатаемые символы, такие, как, например, символ табуляции. Возникает необходимость задавать символы их кодом – в виде escape-последовательностей. Для всех этих целей используется комбинация символов, начинающаяся символом "\" - обратная косая черта. Это так называемые Escape-последовательности
Строки
Escape-последовательность | Имя символа |
\' | Одинарная кавычка |
\" | Двойная кавычка |
\\ | Обратная косая черта |
\0 | Нуль-символ |
\n | Новая строка |
\r | Возврат каретки |
\t | Горизонтальная табуляция |
\v | Вертикальная табуляция |
При этом возникают неудобства: например, при задании констант, определяющих путь к файлу, приходится каждый раз удваивать символ обратной косой черты.
string path2 = "C:\\Users\\Mikant\\Documents";
Строки
@-константы
В @-константах все символы трактуются в полном соответствии с их изображением. Поэтому путь к файлу лучше задавать @-константой. Единственная проблема в таких случаях: как задать символ кавычки, чтобы он не воспринимался как конец самой константы. Решением является удвоение символа.
string path1 = @"C:\Users\Mikant\Documents";
Строки
Метод | Назначение |
Compare() | Статический метод, который позволяет сравнить две строки |
Concat() | Комбинирует отдельные экземпляры строк в одну строку (конкатенация) |
Contains() | Метод, который позволяет определить, содержится ли в строке определенная подстрока |
СоруТо() | Копирует определенное число символов, начиная с определенной позиции в новый экземпляр массива |
IndexOf() | Находит первое вхождение заданной подстроки или символа в строке |
Insert() | Метод, который позволяет вставить строку внутрь другой определенной строки |
LastlndexOf() | То же, что IndexOf, но находит последнее вхождение |
Split() | Метод, возвращающий массив string с присутствующими в данном экземпляре подстроками внутри, которые отделяются друг от друга элементами из указанного массива char или string |
Строки
Метод | Назначение |
Remove() Replace() | Методы, которые позволяют получить копию строки с соответствующими изменениями (удалением или заменой символов) |
Substring() | Извлекает подстроку, начиная с определенной позиции строки |
ToUpper () ToLower() | Методы, которые позволяют создавать копию текущей строки в формате, соответственно, верхнего или нижнего регистра |
Trim() | Метод, который позволяет удалять все вхождения определенного набора символов с начала и конца текущей строки |
Length() | Определяет длину строки |
Строки
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".
ДОСТУП К СИМВОЛАМ СТРОКИ
- Строка состоит из символов. Чтобы получить доступ только для чтения к отдельным символам внутри строки и вывести их, можно обратиться к символу строки по его индексу (начинается с 0):
- s[i] – для доступа к i-му символу строки s
- s.Length – длина строки (кол-во символов в строке)
- Использование цикла for:
- var s = "Computer";
- for (var i=0; i < s.Length; i++)
- Console.Write($"{s[i]} "); // Вывод: C o m p u t e r
ИЗМЕНЕНИЕ КОНКРЕТНОГО СИМВОЛА В СТРОКЕ
- Строки в C# неизменяемы, это означает, что мы не можем использовать следующий код (ошибка!): s[i]='a';
- Символы обрамляются одинарными кавычками.
Как найти индекс первого символа подстроки, которую содержит строка?
Метод 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(); }