Анализ значений строковых данных
Типы данных .NET обеспечивают возможность генерировать переменную того типа, который задается данным текстовом эквивалентом (т.е. выполнять синтаксический анализ). Эта возможность может оказаться чрезвычайно полезной тогда, когда требуется преобразовать вводимые пользователем данные (например, выделенные в раскрывающемся списке) в числовые значения. Рассмотрите следующий фрагмент программного кода.
static void Main(string[] args) {
…
bool myBool = bool. Parse("True");
Console.WriteLine("-› Значение myBool: {0}", myBool);
double myDbl = double. Parse("99,884");
Console.WriteLine("-› Значение myDbl: {0}", myDbl);
int myInt = int .Parse("8");
Console.WriteLine("-› Значение myInt: {0}", myInt);
Char myChar = char .Раrsе("w") ;
Console.WriteLine(''-› Значение myChar: {0}\n", myChar);
…
}
System.DateTime и System.TimeSpan
В завершение нашего обзора базовых типов данных позволите обратить ваше внимание на то, что пространство имен System определяет несколько полезных типов данных, для которых в C# не предусмотрено ключевых слов. Это, в частности, типы DateTime и TimeSpan (задачу исследования типов System.Guid и System.Void, которые среди прочих показаны на рис. 3.19, мы оставляем на усмотрение заинтересованных читателей).
Тип DateTime содержит данные, представляющие конкретные дату (месяц, день, год) и время, которые можно отформатировать различными способами с помощью соответствующих членов. В качестве простого примера рассмотрите следующий набор операторов.
static void Main (string[] args) {
…
// Этот конструктор использует (год, месяц, день)
DateTime dt = new DateTime(2004, 10, 17);
// Какой это день недели?
Console.WriteLine("День {0} – это (1}", dt.Date, dt.DayOfWeek);
dt.AddMonths(2); // Теперь это декабрь.
Console.WriteLine ("Учет летнего времени: {0}", dt.IsDaylightSavingTime());
…
}
Структура TimeSpan позволяет с легкостью определять и преобразовывать единицы времени с помощью различных ее членов, например:
static void Main(string[] args) {
…
// Этот конструктор использует (часы, минуты, секунды)
TimeSpan ts = new TimeSpan(4, 30, 0);
Console.WriteLine(ts);
// Вычтем 15 минут из текущего значения TimeSpan и распечатаем результат.
Console.WriteLine(ts.Subtract(new TimeSpan (0, 15, 0)));
…
}
На рис. 3.20 показан вывод операторов DateTime и TimeSpan.
Рис. 3.20. Использование типов DateTime и TimeSpan
Исходный код.Проект DataTypes размещен в подкаталоге, соответствующем главе 3.
Ключевое слово string в C# является сокращенным обозначением типа System.String, предлагающего ряд членов, вполне ожидаемых от этого класса. В табл. 3.12 предлагаются описания некоторых (но, конечно же, не всех) таких членов.
Таблица 3.12. Некоторые члены System.String
Член |
Описание |
Length |
Свойство, возвращающее длину текущей строки |
Contains() |
Метод, применяемый для выяснения того, содержит ли текущий строковый объект данную строку |
Format() |
Статический метод, применяемый для форматировании строковых литералов с использованием примитивов (числовых данных и других строк) и обозначений типа {0}, уже встречавшихся ранее в этой главе |
Insert() |
Метод, используемый для получения копии текущей строки, содержащей добавляемые строковые данные |
PadLeft() PadRight() |
Методы, возвращающие копии текущей строки, дополненные указанными данными в качестве заполнителя |
Remove() Replace() |
Методы, используемые для получения копии строки с соответствующими модификациями (при удалении или замене символов) |
Substring() |
Метод, возвращающий строку, которая представляет подстроку текущей строки |
ToCharArray() |
Метод, возвращающий массив символов, из которых состоит текущая строка |
ToUpper() ToLower() |
Методы, создающие копию данной строки, представленную символами в верхнем или, соответственно, нижнем регистре |
Базовые операции со строками
Для иллюстрации некоторых базовых операций со строками рассмотрим следующий метод Main().
static void Main(string[] args) {
Console.WriteLine("***** Забавы со строками *****");
string s = "Boy, this is taking a long time.";
Console.WriteLine("-› Содержит ли s 'oy'?: {0}", s .Contains("oy"));
Читать дальше