Главная страница

презентация. Строки. Является последовательностью символов. Каждый символ является символом Юникода в диапазоне от U0000 до Uffff


Скачать 151.21 Kb.
НазваниеЯвляется последовательностью символов. Каждый символ является символом Юникода в диапазоне от U0000 до Uffff
Анкорпрезентация
Дата05.02.2023
Размер151.21 Kb.
Формат файлаpptx
Имя файлаСтроки.pptx
ТипДокументы
#921461

Строки в 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

ИЗМЕНЕНИЕ КОНКРЕТНОГО СИМВОЛА В СТРОКЕ


Как найти индекс первого символа подстроки, которую содержит строка?

Метод 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 numbers = new int[] { 3, 14, 15, 92, 6 };

foreach (int number in numbers)

{

Console.Write($"{number} ");

}

Console.WriteLine();

}


написать администратору сайта