Форматирование целых чисел

This article has been localized into Russian by the community.

If you are fluent in Russian , then please help us - just point to any untranslated element inside the article and click the translation button to get started. Or have a look at the current translation status for the Russian language .

If you see a translation that you think looks wrong, then please consult the original article to make sure and then use the vote button to let us know about it.

Metadata

Please help us by translating the following metadata for the article/chapter, if they are not already translated.

If you are not satisfied with the translation of a specific metadata item, you may vote it down - when it reaches a certain negative threshold, it will be removed. Please only submit an altered translation of a metadata item if you have good reasons to do so!

Please to translate metadata!

Операторы:

Оператор Интерполяции Строк

В других разделах этого руководства вы найдете подробное описание типа данных string, поскольку работа с текстом является очень важной задачей. В этой статье мы сосредоточимся на специальном операторе для работы со строками, позволяющем делать довольно много дополнительных трюков при объявлении строк. Она называется интерполяцией строк (введена в C# 6.0) и позволяет размещать в строке специальные маркеры, которые интерпретатор впоследствии заменит соответствующими значениями. Он работает так же, как строка.Метод Format () мы уже обсуждали, но синтаксис более читабельный и удобный.

Интерполяция строки может быть достигнута очень легко - просто префикс строки с символом $. Как всегда, сразу перейдем к примеру:

String name = "John Doe";
int age = 42;

Console.WriteLine(name + " is " + age + " years old");
Console.WriteLine($"{name} is {age} years old");

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

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

Var user = new
{
Name = "John Doe",
Age = 42
};
Console.WriteLine($"{user.Name} is {user.Age} years old");

Строки форматирования

По умолчанию переменные строки будут включены в представленную строку путем вызова на них метода tostring(). Но иногда вы можете искать немного большего контроля над тем, как отображается каждая переменная, и, к счастью, это очень просто сделать, благодаря строкам форматирования. Просто поместите двоеточие (:) после переменной, а затем введите строку форматирования, которая будет использоваться, как в этом примере:

Double daysSinceMillenium = (DateTime.Now - new DateTime(2000, 1, 1)).TotalDays;
Console.WriteLine($"Today is {DateTime.Now:d} and {daysSinceMillenium:N2} days have passed since the last millennium!");

Результат будет чем-то вроде этого, в зависимости от установок вашей системы для дат и чисел:

Today is Friday, June 29, 2018 and 6,754.49 days have passed since the last millenium!

Обратите внимание, что дата представлена в длинном формате даты (как указано в строке формата "D"), а число красиво отформатировано с тысячами разделителей и двумя десятичными числами благодаря строке числового формата "N2".

Если вам нужен больший контроль, вы можете менять формат строк от значения по умолчанию до пользовательского, например, дату:

Console.WriteLine($"Today is {DateTime.Now:yyyy-MM-dd}");

Существует гораздо больше способов форматирования ДатыВремени, которые вы можете использовать во вставленной строке. Для ознакомления, пожалуйста, проконсультируйтесь на documentation .

За рамками переменных

Теперь мы включили переменные и даже свойства объектов в наши строки, и мы видели, как легко мы можем отформатировать полученные строки. Но интерполяция строк выходит за рамки этого, потому что вы можете иметь целые выражения C# внутри строк, если они приводят к чему-то, что может быть добавлено к строке. Отличным примером этого является классическая"с или без концовкой а " - ситуация, когда вам нужно создать строку либо "1 год" или "2 года ". Это можно сделать непосредственно с помощью интерполяции строк, просто используя тернарный оператор внутри строки:

String name = "John Doe";
int age = 42;

Console.WriteLine($"{name} is {age} year{(age == 1 ? "" : "s")} old");

Обратите внимание, как я вставил простой оператор if-then-else в строку внутри набора скобок. Мы можем сделать это, потому что результатом выражения является строка-либо пустая, либо "а". Вы также можете сделать расчеты:

Console.WriteLine($"5 + 5 * 2 = {((5 + 5) * 2)}");

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

Объединение строк & исключение из них

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

Console.WriteLine($"Insert {name} between curly braces: {{name here}}");

Результат:

Insert John Doe between curly braces: {name here}

Резюме

Если вы когда-либо смотрели на классическую конкатенацию строк и считали ее слишком неуклюжей, вам понравится интерполяция строк! Он был представлен в C# версии 6.0 и позволяет писать текст, который включает переменные в очень естественном и удобном для чтения виде. Они также очень хороши, позволяя вам интегрировать выражения непосредственно в строки, но будьте осторожны - в определенный момент ваша интерполированная строка может быть настолько полной, что ее станет труднее читать, чем другие.

DCDi™ (удвоение строк направленной интерполяцией) - В телевизорах Samsung применяется направленная интерполяция каждого пикселя с использованием технологии DCDi™, определяющей угол внешнего наклона пикселя и удваивающей строки в соответствии с величиной данного угла. Это обеспечивает получение… … Глоссарий терминов бытовой и компьютерной техники Samsung

ГОСТ Р 52210-2004: Телевидение вещательное цифровое. Термины и определения - Терминология ГОСТ Р 52210 2004: Телевидение вещательное цифровое. Термины и определения оригинал документа: 90 (телевизионный) демультиплексор: Устройство, предназначенное для разделения объединенных потоков данных цифрового телевизионного… … Словарь-справочник терминов нормативно-технической документации

576i - 576i, 625/50 стандарт разложения, принятый для аналогового и цифрового телевидения стандартной чёткости в Европе, Австралии, части стран Азии, Африки и Южной Америки. При полном количестве строк, равном 625, в построении изображения участвуют… … Википедия

Стандарты телевизионного вещания - География систем цветного телевидения Стандарт телевизионного вещания система кодирования видеосигнала для его эфирной передачи. Уже в эпоху чёрно белого телевидения возникло несколько разных стан … Википедия

Телекинопроектор - BTS Quadra Телекинопроектор, телекинопередатчик, телекинодатчик устройство для преобразования изображения на киноплёнке в телевизионный видеосигнал … Википедия

Список алгоритмов - Эта страница информационный список. Основная статья: Алгоритм Ниже приводится список алгоритмов, группированный по категориям. Более детальные сведения приводятся в списке структур данных и … Википедия

Матричные модели - в экономике, один из наиболее распространённых типов экономико математических моделей. Представляют собой прямоугольные таблицы (матрицы (См. Матрица)), элементы которых отражают взаимосвязи экономических объектов и обладают определённым… … Большая советская энциклопедия

Компьютерная графика - (также машинная графика) область деятельности, в которой компьютеры используются как инструмент для синтеза (создания) изображений, так и для обработки визуальной информации, полученной из реального мира. Также компьютерной графикой… … Википедия

Низами Гянджеви - Запрос «Низами» перенаправляется сюда; см. также другие значения. Низами Гянджеви перс. نظامی گنجوی‎ курд. Nîzamî Gencewî, نیزامی گه‌نجه‌وی азерб. Nizami Gəncəvi … Википедия

Машинная графика - Компьютерная графика (также машинная графика) область деятельности, в которой компьютеры используются как для синтеза изображений, так и для обработки визуальной информации, полученной из реального мира. Также компьютерной графикой называют и… … Википедия

Последнее обновление: 31.10.2015

Форматирование строк

При выводе строк в консоли с помощью метода Console.WriteLine мы можем применять форматирование вместо конкатенации:

Class Program { static void Main(string args) { Person person = new Person { Name = "Tom", Age = 23 }; Console.WriteLine("Имя: {0} Возраст: {1}", person.Name, person.Age); Console.Read(); } } class Person { public string Name { get; set; } public int Age { get; set; } }

В строке "Имя: {0} Возраст: {1}" на место {0} и {1} затем будут вставляться в порядке следования person.Name и person.Age

То же самое мы можем сделать с помощью метода String.Format :

String output = String.Format("Имя: {0} Возраст: {1}", person.Name, person.Age); Console.WriteLine(output);

Метод Format принимает строку с плейсхолдерами типа {0}, {1} и т.д., а также набор аргументов, которые вставляются на место данных плейсхолдеров. В итоге генерируется новая строка.

В методе Format могут использоваться различные спецификаторы и описатели, которые позволяют настроить вывод данных. Рассмотрим основные описатели.

Все используемые форматы:

C / c

Задает формат денежной единицы, указывает количество десятичных разрядов после запятой

D / d

Целочисленный формат, указывает минимальное количество цифр

E / e

Экспоненциальное представление числа, указывает количество десятичных разрядов после запятой

F / f

Формат дробных чисел с фиксированной точкой, указывает количество десятичных разрядов после запятой

G / g

Задает более короткий из двух форматов: F или E

N / n

Также задает формат дробных чисел с фиксированной точкой, определяет количество разрядов после запятой

P / p

Задает отображения знака процентов рядом с число, указывает количество десятичных разрядов после запятой

X / x

Шестнадцатеричный формат числа

Форматирование валюты

Для форматирования валюты используется описатель "C":

Double number = 23.7; string result = String.Format("{0:C}", number); Console.WriteLine(result); // $ 23.7 string result2 = String.Format("{0:C2}", number); Console.WriteLine(result2); // $ 23.70

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

Форматирование целых чисел

Для форматирования целочисленных значение применяется описатель "d":

Int number = 23; string result = String.Format("{0:d}", number); Console.WriteLine(result); // 23 string result2 = String.Format("{0:d4}", number); Console.WriteLine(result2); // 0023




Top