Хелпикс

Главная

Контакты

Случайная статья





Что еще надо сказать о строках.



Что еще надо сказать о строках.

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

В первом случае задействуется такой элемент языка как “Культура” (класс CultureInfo), который определяет линвистические правила, порядок алфавита и прочее. Существует “культура” по-умолчанию, которую можно найти в свойствах потока Thread.CurrentCulture, но ее можно заменить, используя соответствующую перегрузку методов.

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

Класс String является reference-типом. Поэтому строки хранятся в куче, и мы можем присвоить строковой переменной null. Но при этом операция точного сравнения строк (оператор == и метод Equals), сравнивает не ссылки (как обычно это происходит для ссылочных типов), а реальные значения строк.

Для указания пустой строки лучше всего использовать статическое поле String.Empty.

Для соединения строк в одну можно использовать оператор “+”, при этом компилятор заменит его вызовом метода Concat.

Для доступа к отдельным символам строки можно использовать оператор индекса:

var disk = @"c:\windows"[0]

System.String даже реализует IEnumerable, поэтому можно перебирать буквы любой строки в циклах foreach:

foreach (var c in "Привет мир!")
{
Console.WriteLine(c);
}

При указании в коде строки константой, можно использовать escape-последовательности, чтобы вставлять специальные символы (они начинаются всегда со знака “\”):

Последовательность Символ
\’
\”
\\ \
\n Новая строка
\t Символ табуляции

Касательно вставки символа новой строки, лучше не делать это через escape, а использовать константу Environment.NewLine (т. к. она может отличаться на разных платформах).

Если вам не нужно вставлять специальных символов, таких как табуляция, можно указывать строковую константу с использованием символа @, тогда можно будет вставлять символы “’” и “\” напрямую, а двойную кавычку, указывая две двойных кавычки. Это полезно, например, при указании пути к файлу:

var path = @"c:\windows";

Как я уже сказал, System.String не подходит для выполнения одновременно большого множества операций над строками, т. к. при этом будет быстро забиваться память. Для таких операций следует использовать классы StringBuilder и RegEx. Последний класс также обладает гораздо большими возможностями по анализу текста и поиску.

Очень часто, возникает необходимость конвертировать строку в число или дату и обратно. System.String реализует IConvertable, но лучше для этих целей использовать класс Convert. Кроме того, большая часть числовых классов и классов дат имеют методы Parse и TryParse, с помощью которых также можно производить конвертацию:

var a = Convert.ToInt32("356");
var b = Int32.Parse("356");
var c = Convert.ChangeType( "356", TypeCode.Int32);
var d = Convert.ToString(a);

Наконец, последнее. Любой объект .NET имеет метод ToString() с помощью которого можно получить текстовое представление объекта. Обычно, вы получите просто имя класса, но многие классы переопределяют этот метод и возвращают текстовое представление своего содержимого.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.