KnigkinDom.org» » »📕 Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория»

Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория»

Книгу Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория» читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

1 ... 335 336 337 338 339 340 341 342 343 ... 415
Перейти на страницу:

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
всего с тем, что необходимо уметь задавать в строке непечатаемые символы, такие, как, например, символ табуляции. Возникает необходимость задавать символы их кодом — в виде escape-последовательностей. Для всех этих целей используется комбинация символов, начинающаяся символом "" — обратная косая черта. Так, пары символов: "n", "t", "\", """ задают соответственно символ перехода на новую строку, символ табуляции, сам символ обратной косой черты, символ кавычки, вставляемый в строку, но не сигнализирующий о ее окончании. Комбинация "xNNNN" задает символ, определяемый шестнадцатеричным кодом NNNN. Хотя такое решение возникающих проблем совершенно естественно, иногда возникают неудобства: например, при задании констант, определяющих путь к файлу, приходится каждый раз удваивать символ обратной косой черты. Это одна из причин, по которой появились @-константы.

В @-константах все символы трактуются в полном соответствии с их изображением. Поэтому путь к файлу лучше задавать @-константой. Единственная проблема в таких случаях: как задать символ кавычки, чтобы он не воспринимался как конец самой константы. Решением является удвоение символа. Вот соответствующие примеры:

//Два вида констант

s1= "х50";

s2 = @"х50""";

b1 (s1==s2);

Console.WriteLine("s1={0}, s2={1}, b1={2}", s1,s2,b1);

s1 = "c: \c#book\ch5\chapter5.doc";

s2 = @"c: c#bookch5chapter5.doc";

b1= (s1==s2);

Console.WriteLine("s1={0}, s2={1}, b1={2}", s1,s2,b1);

s1= "" A"";

s2=@"""A""";

bl= (s1==s2);

Console.WriteLine("s1={0}, s2={1}, b1={2}", s1,s2,b1);

Взгляните на результаты работы приведенных фрагментов кода, полученные при вызове процедур TestDeclStrings и TestOpers.

Рис. 14.1. Объявления, константы и операции над объектами string

Неизменяемый класс String

В языке C# существует понятие неизменяемый (immutable) класс. Для такого класса невозможно изменить значение объекта при вызове его методов. Динамические методы могут создавать новый объект, но не могут изменить значение существующего объекта.

К таким неизменяемым классам относится и класс String. Ни один из методов этого класса не меняет значения существующих объектов. Конечно, некоторые из методов создают новые значения и возвращают в качестве результата новые строки. Невозможность изменять значения строк касается не только методов. Аналогично, при работе со строкой как с массивом разрешено только чтение отдельных символов, но не их замена. Оператор присваивания из нашего последнего примера, в котором делается попытка изменить первый символ строки, недопустим, а потому закомментирован.

//Неизменяемые значения

         s1= "Zenon"; ch1 = s1 [0];

//s1[0]='L';

Таблица 14.1. Статические методы и свойства класса String

Статические свойства и методы класса String

Метод ∙ Описание

Empty ∙ Возвращается пустая строка. Свойство со статусом read only

Compare ∙ Сравнение двух строк. Метод перегружен. Реализации метода позволяют сравнивать как строки, так и подстроки. При этом можно учитывать или не учитывать регистр, особенности национального форматирования дат, чисел и т. д.

CompareOrdinal ∙ Сравнение двух строк. Метод перегружен. Реализации метода позволяют сравнивать как строки, так и подстроки. Сравниваются коды символов

Concat ∙ Конкатенация строк. Метод перегружен, допускает сцепление произвольного числа строк

Copy ∙ Создается копия строки

Format ∙ Выполняет форматирование в соответствии с заданными спецификациями формата. Ниже приведено более полное описание метода

Intern, Islntern ∙ Отыскивается и возвращается ссылка на строку, если таковая уже хранится во внутреннем пуле данных. Если же строки нет, то первый из методов добавляет строку во внутренний пул, второй — возвращает null. Методы применяются обычно тогда, когда строка создается с использованием построителя строк — класса StringBuilder

Join ∙ Конкатенация массива строк в единую строку. При конкатенации между элементами массива вставляются разделители. Операция, заданная методом Join, является обратной к операции, заданной методом Split. Последний является динамическим методом и, используя разделители, осуществляет разделение строки на элементы

Метод Format

Метод Format в наших примерах встречался многократно. Всякий раз, когда выполнялся вывод результатов на консоль, неявно вызывался и метод Format. Рассмотрим оператор печати:

Console.WriteLine("s1={0}, s2={1}", s1,s2);

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

Давайте рассмотрим общий синтаксис как самого метода Format, так и используемых в нем форматов. Метод Format, как и большинство методов, является перегруженным и может вызываться с разным числом параметров. Первый необязательный параметр метода задает провайдера, определяющего национальные особенности, которые используются в процессе форматирования. В качестве такого параметра должен быть задан объект, реализующий интерфейс System.IFormatProvider. Если этот параметр не задан, то используется культура, заданная по умолчанию. Вот примеры двух реализаций этого метода:

public static string Format(string, object);

public static string Format(IFormatProvider, string, params object[]);

Параметр типа string задает форматируемую строку. Заданная строка содержит один или несколько форматов, они распознаются за счет окружающих формат фигурных скобок. Число форматов, вставленных в строку, определяет и число объектов, передаваемых при вызове метода Format. Каждый формат определяет форматирование объекта, на который он ссылается и который, после преобразования его в строку, будет подставлен в результирующую строку вместо формата. Метод Format в качестве результата возвращает переданную ему строку, где все спецификации формата заменены строками, полученными в результате форматирования объектов.

Общий синтаксис, специфицирующий формат, таков:

{N [,М [:<коды_форматирования>]]}

Обязательный параметр N задает индекс объекта, заменяющего формат. Можно считать, что методу всегда передается массив объектов, даже если фактически передан один объект. Индексация объектов начинается с нуля, как это принято в массивах. Второй параметр M, если он задан, определяет минимальную ширину поля, которое отводится строке, вставляемой вместо формата. Третий необязательный параметр задает коды форматирования, указывающие, как следует форматировать объект. Например, код C (Currency) говорит о том, что параметр должен форматироваться как валюта с учетом национальных особенностей представления. Код P (Percent) задает форматирование в виде процентов с точностью до сотой доли.

Все становится ясным, когда появляются соответствующие примеры. Вот они:

public void TestFormat()

{

    //метод Format

    int x=77;

    string s= string.Format("x={0}",x);

    Console.WriteLine(s + "tx={0}",x);

    s= string.Format("Итого:{0,10} рублей",x);

    Console.WriteLine(s);

    s= string.Format("Итого:{0,6:######} рублей",x);

    Console.WriteLine(s);

    s= string.Format("Итого:{0:P} ",0.77);

    Console.WriteLine(s);

    s= string.Format("Итого:{0,4:С} ",77.77);

    Console.WriteLine(s);

    //Национальные особенности

    System.Globalization.Culturelnfo ci =

         new System.Globalization.Culturelnfo("en-US");

    s= string.Format(ci,"Итого:{0,4:С} ",77.77);

    Console.WriteLine(s);

1 ... 335 336 337 338 339 340 341 342 343 ... 415
Перейти на страницу:
Отзывы - 0

Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


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

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.


Партнер

Новые отзывы

  1. TatSvel2 TatSvel219 июль 19:25 Незабываемая Феломена, очень  интересный персонаж, прочитала  с удовольствием! Автор-молодец!!!... Пограничье - Надежда Храмушина
  2. Гость Наталья Гость Наталья17 июль 12:42 Сюжет увлекательный и затейный,читается легко,но кто убийца,сразу было понятно.... Дорога к Тайнику. Часть 1 - Мария Владимировна Карташева
  3. Гость Дарья Гость Дарья16 июль 23:19 Отличная книга. Без сцен 18+, что приятно. Легкий и приятный сюжет. Благоразумная ГГ, терпеливый и сдержанный ГГ. Прочла с... Королева драконов - Анна Минаева
Все комметарии
Новое в блоге