Работа со строками string С#

Приветствую всех, сегодня поговорим о строках. Все мы так или иначе используем string в своих приложениях. Но у начинающих программистов возникают проблемы в понимании и с работой с этим типом. Строку можно представить в виде массива символов, однако это не так, так как строки являются ссылочными типами. Строка неизменна, каждый раз когда мы пытаемся изменить строку, старая стерается и создается новая. Так как строки являются ссылочными типами они находятся в куче.

Объявление и инициализация строк:

Как из строки по индексу получить символ?

Так как мы знаем что строка, состоит из символов, то нам достаточно указать какой индекс символа нас интересует в строке и мы можем его вывести либо сохранить в переменной, что я и сделал. Однако изменить символ в строке нельзя, так как это не ссылочный тип переменных, для изменения данных в строке необходимо использовать доступные для этого  методы.

Как найти символ или целое слово в строке?

Мы создали строку, и указали в качестве поиска символ y воспользовались методом IndexOf(); и сохранили результат в целочисленной переменной. Результат стал цифра 6, так как первое вхождение символа y было по индексу 6.

Так же мы можем осуществить не только поиск символа но и подстроки, в примере ниже мы из строки предложения, найдем целое слово!

Мы в примере выше, воспользовались тем же метод IndexOf(); который принял другой аргумент, так как он имеет ряд перегрузок. И сохранили индекс вхождения слова в строку.

Еще одним часто используемым методом строк является StartsWith(); Который вернет true если слово в строке было найдено, в противном случаи false, таким образом этот метод можно использовать для поиска слова в тексте.

Как разбить строку на слова?

В следующем примере возьмем строку и разобьем ее на слова сохраним в массив и выведем в консоль. А воспользуемся мы методом Split(); который принимает в качестве аргумента символ, в нашем случаи пробел.

Метод Split(); возвращаем строковый массив, содержащий подстроки данного экземпляра, разделенного элементами заданного массива.

Однако этот метод не на столько хорош, как хотелось бы, потому что в строке между словами могло быть больше пробелов и соответственно это повлияло бы на разделения слов. Так как один пробел это один символ, два пробела два символа. А по этому лучше воспользоваться другим примером для разделения строки на слова:

В данном примере мы воспользовались другой перегрузкой метода Split(); первый аргумент символ пробела остался не измененным, но добавился второй аргумент StringSplitOptions.RemoveEmptyEntries который позволяет удалить все пустые подстроки.

Как обрезать или удалить символ в строке?

Для этого воспользуемся методом Trim(); Который позволяет без параметров удалить пробелы в начале и в конце строки, однако он имеет ряд полезных перегрузок одна из них, удаление в начале или в конце строки заданного  символа.

Для обрезки определенной части строки воспользуйтесь методом Substring(), имеет он два перегруженных метода, которые позволяют удалить до указанной позиции в начале строки и вторая перегрузка метода позволяет удалить с конца строки до указанной позиции символы.

Как вставить слово в строку в определенное место?

В этом примере мы рассмотрим метод Insert(); который позволяет вставить в строку по индексу подстроку.

Как видно из примера первый аргумент, это индекс с которого будет происходить вставка подстроки, а второй аргумент и есть сама подстрока.

Как удалить часть строки?

В этом нам поможет метод Remove(); Рассмотрим пример ниже:

Как заменить слово в строке целиком?

Сейчас рассмотрим как можно в строке заменить полностью слово на другое. Для этого воспользуемся методом Replace();

В качестве первого аргумента метод принимает слово которое требует замены, если оно есть он поменяет его на слово которое во втором аргументе. Я этот метод еще использую когда требуется удалить определенное слово в строке. Для этого достаточно вторым аргументом  в  методе указать «» и ваше слово будет удаленно, можно так же им воспользоваться для удаления пробелов.

Как изменить регистр букв в строке на заглавные или прописные?

Это один из часто используемых  методов  ToLower(); ToUpper(); которые позволяют всю строку преобразовать в заглавную или прописную строку.

Конкатенация строк!

В заключительной части со строками хотелось затронуть не маловажную роль конкатенации. Когда вы имеете две и более строк и вам необходимо их объединить, обычно мы используем оператор +

Однако использовать их в длительных циклах, является грубой ошибкой и беспечностью, дело в том что в циклах таким образом создаются каждый раз новые экземпляры строки, тем самым увеличивая память, и уменьшает производительность программы. В этом можно убедиться в примере ниже:

Что бы избежать подобного рода ошибок необходимо использовать класс StringBuilder(); и его методы, в примере продемонстрирован пример с верху но с использованием класса StringBuilder();

Интересной особенностью использования StringBuilder является еще одна фишка, можно сокращать длину строки следующим образом:

Что интересно такой вариант не прокатит с обычными строками)

 

 

 

Обновлено: 18.01.2018 — 16:29

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.