Символы и строки в C#. Примеры.



Работа со строками в C#.

Строки в C# – это не простые переменные типа int или bool. Когда мы объявляем какую-либо переменную, то система сразу знает сколько памяти необходимо выделить для хранения значения. Как в этом случае системе быть со строками? Каждый символ в строке занимает 2 байта (в .NET по умолчанию используется Unicode), но количество символов может быть разным.

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

C# – это довольно молодой язык программирования и его разработчики постарались учесть все возможные нюансы и тонкости работы со строками. Вот об том мы сегодня с вами и поговорим.

Строки в C# – это объекты типа String значением которого является текст. Что это значит? Как я и обещал, вначале рассмотрим аналогию строк в Delphi и C#.

И такой код в Delphi компилируется на ура. В итоге мы бы получили в Caption пустую строку. Но в C# строка – объект. Проведите аналогия с объектом в Delphi. Что получим, если попробуем обратиться к свойству объекта, когда его ещё не существует, он не создан? Правильно – AV, со всеми вытекающими последствиями. Примерно то же самое и при обращении к непроинициализированной строке в C#. Если написать в Visual Studio: private void button1_Click(object sender, EventArgs e)

{

string s;

label1.Text = s;

}

То сразу получим сообщение об ошибке "Ошибка: Использование локальной переменной "s", которой не присвоено значение". Так то. Прежде, чем обращаться к строке ей следует создать, т.е. передать объекту какое-либо значение. В C# строки (да и любые переменные в принципе) можно объявлять следующим образом: string s;//объявление без инициализации

string s = null; //инициализируем, присваивая значение null

string s = "Hello World";//инициализируем, присвоив в качестве значения текст

Теперь исправим немного листинг и напишем: private void button1_Click(object sender, EventArgs e)

{

string s = null;

label1.Text = s;

  }

 

 

Вот после этого код Delphi и код C# будут работать идентично – в Caption метки выведется пустая строка. Это что касается объявления строк.

Теперь следующий момент – в .NET нельзя изменять строки. Что это значит? Например, есть код:string str;

str = "Строка 1";

str = "Строка с другим количеством символов"

 

 

Также приведет к переопределению памяти и созданию нового объекта строки. Как видите процесс работы со строками с одной стороны довольно прост – всю рутинную работу берет на себя система, но с другой стороны можно легко в ходе работы программы нарваться на пустую или неинициализированную строку. Как избежать подобных случаев? В C# есть замечательный метод под названием IsNullOrEmpty, которые возвращает True в случае, если передаваемый параметр равен null или пустой строке. Использовать метод можно, например так: string s=null;

if (String.IsNullOrEmpty(s))

{

  label1.Text = "Пустая строка";

}

Методы для работы со строками

Contains() – позволяет узнать, содержит ли строка подстроку, переданную в качестве параметра. Если содержит, то метод вернет

Format() – статичный метод ( аналог классового метода в Delphi), который позволяет форматировать строки. Внутри строки можно указывать в фигурных скобках места куда должны вставляться второй, третий и т.д. параметры, например:  

IndexOf() – возвращает индекс символа, начиная с которого в строке найдена подстрока, переданная в качестве параметра. Если ничего не найдено, то результат равен -1. Пример использован

 

Insert() – вставляет подстроку, переданную во втором параметре, в строку, начиная с символа, указанного в первом параметре. Например, вставим слово "мир" в переменную str, начиная с седьмой позиции

Remove() – удаляет из строки символы, начиная с индекса, указанного в первом параметре, и ровно столько символов, сколько указано во втором параметре. Если во втором параметре ничего не указано, то удаление производится до конца строки. Сама строка при этом не изменяется, а измененный вариант возвращается в качестве результата. Например, чтобы удалить из строки все символы, начиная с третьего можно сделать так: string str="Привет";

 Replace() – ищет в строке подстроку, указанную в качестве первого параметра и заменяет её на строку из второго параметра, возвращая результат замены. Например: string

ToUpper(), ToLower() – возвращают строку, все символы которой приведены к верхнему или нижнему регистру.

ToCharArray() – переводит строку в массив символов. Удобно использовать, когда необходимо проанализировать строку посимвольно, например, с использованием цикла foreach: string

 


Дата добавления: 2018-05-12; просмотров: 620; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!