C#   Уроки программирования с нуля. Си-шарп для чайников   C#

Здравствуйте, гость!
Вход
Регистрация


Форматирование строк в Си-шарп. Метод System.String.Format
В уроке 9 была рассмотрена работа со строками в Си-шарп, сейчас же мы поговорим о их форматировании. Потребность в форматировании строк возникает довольно часто (вывод определенного количества знаков после запятой для числа, или дата в нужом формате и. т.д.).

В Си-шарп возможностью задать форматирование обладают следующие методы:

- System.String.Format
- Console.WriteLine
- StreamWriter.Write
- ToString

Методы WriteLine и Write используются для вывода информации в консоль, и при этом дают возможность отформатировать вывод. Метод Format класса String предназначен конкретно для форматирования. Он возвращает отформатированную строку. Разницы между самим форматированием для этих методов нет. Форматирование в методе ToString можно задать только для чисел и дат.

Общая структура форматирования строк имеет следующий вид:

String.Format("строка формата", arg0, arg1, …, argn);

arg0 и arg1 здесь – аргументы форматирования (числа, строки, даты, и т. д.), из которых в результате будет создана новая отформатированная строка.

Строка формата может содержать обычные символы, которые будут отображены в том виде, в котором они заданы, и команды форматирования. Команда форматирования заключается в фигурные скобки и имеет следующую структуру:

{[номер аргумента], [ширина]:[формат]}

По [номеру аргумента] указывается к какому аргументу будет применена данная команда (отсчет аргументов начинается с нуля).
[ширина] задает минимальный размер поля.
[формат] – спецификатор формата.

Параметры [ширина] и [формат] не являются обязательными.

Пример простого форматирования:

string formattedString = string.Format("Result is {0}", 5); // "Result is 5"

Здесь на место команды {0} подставляется 0-й аргумент.

int num1 = 5, num2 = 3;
string formattedString = string.Format("{0}+{1}={2}", num1, num2, num1+num2); // "5+3=8"
Console.WriteLine(formattedString);
Console.ReadLine();


Параметр "ширина"

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

Console.WriteLine("Result is {0, 6}", 1.2789);
Console.WriteLine("Result is {0, 6}", 7.54);
Console.WriteLine("Result is {0, -6}", 1.2789);
Console.WriteLine("Result is {0, -6}", 7.54);

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

Result is 1,2789
Result is    7,54
Result is 1,2789
Result is 7,54

Встроенные форматы числовых данных

А теперь мы рассмотрим параметр команды форматирования после двоеточия – формат. Для числовых аргументов определен целый ряд форматов, все они описаны в таблице 1. Почти для всех форматов можно также задать точность. Например, формат для чисел с фиксированной точкой «f» по умолчанию выводит не больше двух знаков после точки. Чтобы задать 4 знака - нужно указать после обозначения формата необходимое число, «f4».

Таблица 1
Специальный символФорматОписание
c/CДенежная единицаУказывает количество десятичных знаков
d/DЦелые числаУказывает минимальное количество цифр. При необходимости добавляются нули
e/EЭкспоненциальные числаУказывает количество десятичных знаков
f/FЧисла с фиксированной точкойУказывает количество десятичных знаков
g/GФорматы e/E и g/GИспользует более короткий формат из двух: f/F и g/G
n/NЧисла с фиксированной точкой с отделением групп разрядовУказывает количество десятичных знаков
p/PПроцентыУмножает число на 100 и выводит со знаком процентов. Указывает количество десятичных знаков
r/RФормат кругового преобразования. Только фиксированная точкаФорматирует число в строку таким образом, что его можно обратно преобразовать без потерь точности
x/XШестнадцатеричные числаУказывает минимальное количество цифр. При необходимости добавляются нули

Пример использования некоторых из встроенных форматов:

Console.WriteLine("{0:c}", 5.50); // "5,50 грн."
Console.WriteLine("{0:c1}", 5.50); // "5,5 грн."
Console.WriteLine("{0:e}", 5.50); // "5,500000е+000"
Console.WriteLine("{0:d}", 32); // "32"
Console.WriteLine("{0:d4}", 32); // "0032"
Console.WriteLine("{0:p}", 0.55); // "55,00%"


Пользовательский формат числовых данных

В таблице 1 были описаны стандартные форматы для числовых данных, но иногда необходимо определить некоторый собственный формат. Для создания пользовательских форматов используются специальные символы (Таблица 2):

Таблица 2
Специальный символЗначение
0Цифра или ноль
#Цифра
.Разделитель дроби
,Разделитель тысяч
%Процент
eЭкспонента
;Определяет разделы, которые описывают форматы для положительных, отрицательных чисел и нуля
\Экранирование специальных символов. Позволяет вставлять спец-символы как текст

Пример использования пользовательских форматов:

Console.WriteLine("{0:0000.00}", 1024.32); // "1024,32"
Console.WriteLine("{0:00000.000}", 1024.32); // "01024,320"
Console.WriteLine("{0:####.###}", 1024.32); // "1024,32"
Console.WriteLine("{0:####.#}", 1024.32); // "1024,3"
Console.WriteLine("{0:#,###.##}", 1024.32); // "1 024,32"
Console.WriteLine("{0:##%}", 0.32); // "32%"
Console.WriteLine("{0:<####.###>;[####.###];ноль}", 1024.32); // "<1024,32>"
Console.WriteLine("{0:<####.###>;[####.###];ноль}", -1024.32); // "[1024,32]"
Console.WriteLine("{0:<####.###>;[####.###];ноль}", 0); // "ноль"


Здесь стоит отметить, что если количество цифр целой части числа больше чем количество символов «0» или «#» в формате, целая часть числа всё равно будет выводиться полностью.

Встроенные форматы даты и времени

Для работы с датой и временем существует отдельный набор стандартных форматов. Данные форматы наведены в таблице 3:

Таблица 3
Специальный символФорматПример
dКороткая дата30.06.2014
DДлинная дата30 июня 2014 г.
tКороткое время22:30
TДлинное время22:30:10
fДлинная дата/короткое время30 июня 2014 г. 22:30
FДлинная дата/длинное время30 июня 2014 г. 22:30:10
gКороткая дата/короткое время30.06.2014 22:30
GКороткая дата/длинное время30.06.2014 22:30:10
M/mМесяц и деньиюня 30
O/oОбратный2014-06-30T22:30:10.0000000
R/rRFC1123Mon, 30 Jun 2014 22:30:10 GMT
sДля сортировки2014-06-30T22:30:10
uЛокальное, в универсальном формате2014-06-30 22:30:10Z
UGMT30 июня 2014 г. 19:30:10
YГод и месяцИюнь 2014

Пример использования стандартных форматов даты и времени:

Console.WriteLine("{0:d}", DateTime.Now); // "30.06.2014"
Console.WriteLine("{0:D}", DateTime.Now); // "30 июня 2014 р."
Console.WriteLine("{0:t}", DateTime.Now); // "2:57"
Console.WriteLine("{0:T}", DateTime.Now); // "2:57:53"
Console.WriteLine("{0:U}", DateTime.Now); // "29 июня 2014 р. 23:57:53"
Console.WriteLine("{0:Y}", DateTime.Now); // "Июнь 2014 р."


Пользовательский формат даты и времени

Как и в случае с числовыми данными, для даты и времени можно определять пользовательский формат. Для этого используются специальные символы, которые наведены в таблице 4 (на примере даты 30.06.2014 22:30:10.1234):

Таблица 4
Специальный символЗначениeРезультат
yГод 0-94
yyГод 00-9914
yyyyГод, 4 цифры2014
MМесяц 1-126
MMМесяц 01-1206
dДень 1-310
ddДень 01-3130
hЧас 1-122
hhЧас 01-1210
HЧас 1-2422
HЧас 01-2422
mМинута 0-5930
mmМинута 00-5930
sСекунда 0-5910
ssСекунда 00-5910
f – ffffffДоли секунды12 (для ff)
F-FFFFFFДоли секунды, если они не равны 012 (для ff)
MMMСокращенное имя месяцаИюн
MMMMИмя месяцаИюнь
dddСокращенное имя дня неделиПн
ddddИмя дня неделипонедельник
ttМаркер для "AM" и "PM" 12-часового форматаPM
zzСмещение временной зоны, короткое+03
zzzСмещение временной зоны, полное+03:00
ggЭра A.D.
:Разделитель времени22:30:10
/Разделитель даты30.06.2014
\Экранирование

Пример использования пользовательских форматов даты и времени:

Console.WriteLine("{0:y yy yyy yyyy}", DateTime.Now); // "14 14 2014 2014"
Console.WriteLine("{0:d dd ddd dddd}", DateTime.Now); // "30 30 Пн понедельник"
Console.WriteLine("{0:M MM MMM}", DateTime.Now); // "6 06 Июн"
Console.WriteLine("{0:HH.mm.ss dd-MMM-yyyy}", DateTime.Now); // "03.21.22 30-Июн-2014"
Console.WriteLine("{0:z zz zzz}", DateTime.Now); // "+3 +03 +03:00"


Форматирование с использованием метода ToString

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

Console.WriteLine(DateTime.Now.ToString("dd MMM yyyy")); // 30 Июн 2014


Региональные параметры CultureInfo

В примерах выше стандартные параметры культуры. Деньги выводились в рублях, названия месяцев, дней на русском языке. CultureInfo также влияет на разделитель в числах, количество символов после точки по умолчанию и другое. Иногда возникает потребность изменить это, и для этого используется CultureInfo. По умолчанию CultureInfo соответствует настройкам Windows (например российские региональные настройки). Чтобы задать собственную культуру при форматировании, используя метод Format, необходимо в конструктор этого метода первым аргументом передать объект CultureInfo.

В примере ниже текущий день выводится с текущими настройками CultureInfo (российскими), с английскими (английский Соединенных Штатов), и с украинскими:

string formattedString = string.Format(new System.Globalization.CultureInfo("en-US"), "{0:dddd} Money - {1:c}", DateTime.Now, 15);
Console.WriteLine("{0:dddd} Money - {1:c}", DateTime.Now, 15); // "понедельник Money - 15,00 руб."
Console.WriteLine(formattedString); // "Monday Money - $15.00"
formatedString = string.Format(new System.Globalization.CultureInfo("uk-UA"), "{0:dddd} Money - {1:c}", DateTime.Now, 15);
Console.WriteLine(formattedString); // "понеділок Money - 15,00 грн."


Домашнее задание

Есть массив дат (с временем) и массив температур, и они соответствуют друг другу. Температуры в массиве имеют вид в формате: «26.3 27.1 30 24.7 25». Необходимо вывести информацию таким образом:

Июн 30 (Пн) 09:31 > 26,3 °C
Июн 30 (Пн) 10:31 > 27,1 °C
Июн 30 (Пн) 11:31 > 30,0 °C

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


Поделиться с друзьями:
30 июн 2014 22:33
pegorcag 20 фев 2017 08:29
Высокооплачиваемая подработка в домашних условиях.
Мы предлагаем: Достойная зарплата без задержек, справка 2-НДФЛ, карьерный рост, бесплатное обучение,
свободный график, страховые взносы в Пенсионный фонд, официальный договор (по желанию).
Рабочий график, Вы определяете по своим возможностям.
Ваш возраст и образование значения не имеют.
Обязательные условия: наличие компьютера и интернета.
Ваши действия:
1. На сайте ( www.off-rabota.tk ) скачайте и установите приложение.
2. Ознакомьтесь с содержимым.
3. Пройдите несложную регистрацию.
4. Обязательно, пройдите курсы обучения. (Бесплатно)
5. Начинайте зарабатывать!
Зарплату мы перечисляем только на банковскую карту любой платёжной системы.
(Для работы советуем оформить отдельную карту)
ВНИМАНИЕ! Весь процесс регистрации, обучения совершенно бесплатны. Не попадитесь в руки мошенников!

-----JGHHJ16FU16G1U6F51J6F1J6R1UY6F5Y-----

wegorcag 02 фев 2017 14:06
Увлекательная подработка не выходя из дома.
Мы предлагаем: Достойная зарплата без задержек, справка 2-НДФЛ, карьерный рост, бесплатное обучение,
свободный график, страховые взносы в Пенсионный фонд, официальный договор (по желанию).
Режим работы, Вы определяете сами.
Ваш возраст и образование значения не имеют.
Обязательные условия: наличие компьютера и интернета.
Ваши действия:
1. На сайте ( www.off-rabota.tk ) скачайте и установите приложение.
2. Ознакомьтесь с содержимым.
3. Пройдите несложную регистрацию.
4. Обязательно, пройдите курсы обучения. (Бесплатно)
5. Начинайте зарабатывать!
Зарплату мы перечисляем только на банковскую карту любой платёжной системы.
(Для работы советуем оформить отдельную карту)
ВНИМАНИЕ! Весь процесс регистрации, обучения совершенно бесплатны. Не попадитесь в руки мошенников!

-----JGHHJ16FU16G1U6F51J6F1J6R1UY6F5Y-----

Святослав 29 дек 2016 05:30

using System;
using System.Collections.Generic;
namespace ConsoleApplication64
{
class Program
{
static void Main(string[] args)
{
List <DateTime> dates = new List<DateTime>();

//Список дат
dates.Add(new DateTime(2014, 6, 30, 9, 31, 0));
dates.Add(new DateTime(2014, 6, 30, 10, 31, 0));
dates.Add(new DateTime(2014, 6, 30, 10, 31, 0));

//Массив температур
double[] temps = new double[3] { 26.3, 27.1, 30.0 };

Console.WriteLine("{0:MMM dd(ddd) h:mm > }" + temps[0] + "°C", dates[0]);
Console.WriteLine("{0:MMM dd(ddd) h:mm > }" + temps[1] + "°C", dates[1]);
Console.WriteLine("{0:MMM dd(ddd) h:mm > }" + "{1:f1}" + "°C", dates[2], temps[2]);
Console.ReadLine();
}
}
}

Ерлан 10 ноя 2016 04:59
string[] dtarray = new string[3];
string[] grarray = new string[3] { "26,3", "27,1", "30,0" };
DateTime ti = DateTime.Now;
string dt = String.Format("{0:MMM d}({0:ddd})", ti);
for (int i = 0; i < dtarray.Length; i++)
{
dtarray[i] = i == 0 ? ti.ToString("t") : (ti.AddHours(1)).ToString("t");
Console.WriteLine(String.Format("{0} {1} > {2} °C", dt, dtarray[i], grarray[i]));
}

Console.ReadKey();

FOX 08 ноя 2016 12:57
namespace ConsoleApplication11
{
class Program
{
static void Main(string[] args)
{
DateTime[] d = new DateTime[3];
double[] t = new double[3];

d[0] = Convert.ToDateTime("01.01.2016 15:25");
d[1] = Convert.ToDateTime("02.02.2016 17:20");
d[2] = Convert.ToDateTime("07.04.2016 22:17");
t[0] = 10.11;
t[1] = 15.36;
t[2] = 20.39;

TempDat tt = new TempDat(d,t);
tt.Vivod();
}
}
class TempDat
{
DateTime[] date=new DateTime[3];
double[] temp=new double[3];

//Конструктор класса
public TempDat(DateTime[] Date,double[] Temp)
{
date = Date;
temp = Temp;
}

//Метод класса
public void Vivod()
{
int i=0;
string formattedString;
foreach (DateTime dd in date)
{
//делаем форматирование чтоб месяц писался по русски, а градусы выводились через точку
formattedString = string.Format(new System.Globalization.CultureInfo("ru-RU"), "{0: MMMM dd (ddd) HH:mm} > ", dd);
formattedString = formattedString + string.Format(new System.Globalization.CultureInfo("us-US"), "{0:####.#}°C", temp[i]);
Console.WriteLine(formattedString);
i++;
}
Console.ReadKey();
}


}
}

Doxako 22 сен 2016 22:44
public static void Main(string[] args)
{
double[] arrayT = {22.4, 22.44, 21.25};
string[] arrayD = {"Июн 30 (Пн) 09:31", "Июн 30 (Пн) 10:31", "Июн 30 (Пн) 11:31"};
for(int i = 0; i < arrayD.Length; ++i)
Console.WriteLine("{0} > {1:f2}°C", arrayD[i], arrayT[i]);

Console.Read();
}

Александр Михалев 23 июн 2016 18:40

static void Main(string[] args)
{
string[] date = new string[3] { "Июн 30 (Пн) 09:31", "Июн 30 (Пн) 10:31", "Июн 30 (Пн) 11:31" };
string[] t = new string[3] { "26,3 °C", "27,1 °C", "30,0 °C" };
Console.WriteLine("{0} > {1}", date[0], t[0]);
Console.WriteLine("{0} > {1}", date[1], t[1]);
Console.WriteLine("{0} > {1}", date[2], t[2]);
Console.ReadLine();
}

Zuzundra 11 фев 2016 19:31
using System;
using System.Collections;
using System.Text.RegularExpressions;
using System.Collections.Generic;


namespace homeWork
{
class DatesWithTime
{
private string Month;
private string Date;
private string Day;
private string TimeX;
public DatesWithTime(string month, string date, string day, string timeX)
{
Month = month;
Date = date;
Day = day;
TimeX = timeX;
}
public string CompletingString ()
{
string compString = string.Format ("{0} {1} ({2}) {3}", this.Month.Remove(3), this.Date, this.Day.Remove(2), this.TimeX);
return compString;
}

}

class Tempretures
{
private float CurrentTempreture;
public Tempretures(float currentTempreture)
{
CurrentTempreture = currentTempreture;
}
public string CompletingStringT ()
{
string compStringT = string.Format ("> {0:0.0}", this.CurrentTempreture);
return compStringT;
}
}



class Program
{
public static void Main (string[] args)
{
List<DatesWithTime> DatesList = new List<DatesWithTime> ();
DatesList.Add(new DatesWithTime("June", "14", "Monday", "12:30"));
DatesList.Add(new DatesWithTime("September", "18", "Wednesday", "14:20"));
DatesList.Add(new DatesWithTime("November", "24", "Tuesday", "12:30"));
// DatesList.Add(new DatesWithTime("November", "23", "Tuesday", "12:30")); - добавление лишнего элемента


List<Tempretures> TempList = new List<Tempretures> ();
TempList.Add(new Tempretures(20.8f));
TempList.Add(new Tempretures(19f));
TempList.Add(new Tempretures(25.46f));

if (DatesList.Count == TempList.Count) {
foreach (DatesWithTime i in DatesList) {
int m = DatesList.IndexOf (i);
string uberString = string.Format ("{0} {1}", i.CompletingString (), TempList [m].CompletingStringT ());
Console.WriteLine (uberString);
}
}
else
Console.WriteLine ("Data is not finished");


Console.WriteLine ("hurey!");


Console.ReadKey ();

}
}
}

neronovs 18 янв 2016 14:47

static void Main(string[] args)
{
double[] temp = new double[5] { 25.1, 24.4, 26.9, 31.0, 28.7};
DateTime[] date = new DateTime[5];

date[0] = new DateTime(2015, 06, 01, 10, 0, 0);
date[1] = new DateTime(2015, 06, 11, 10, 0, 0);
date[2] = new DateTime(2015, 06, 21, 10, 0, 0);
date[3] = new DateTime(2015, 07, 01, 10, 0, 0);
date[4] = new DateTime(2015, 07, 11, 10, 0, 0);

for (int i = 0; i < temp.Length; i++)
{
Console.WriteLine(" {0:MMM dd (ddd) HH:mm} > {1:00.0} \u00B0C", date[i], temp[i]);
}

Console.ReadKey();
}

Kolsky 16 янв 2016 21:06

/*
* Сделано в SharpDevelop.
* Пользователь: Kolsky
* Дата: XX.XX.XXXX
* Время: XX:YY
*
* Для изменения этого шаблона используйте Сервис | Настройка | Кодирование | Правка стандартных заголовков.
*/
using System;

namespace n
{
class Program
{
public static void Main(string[] args)
{
double[] t_in_degC=new double[5];
t_in_degC[0]=26.3;
t_in_degC[1]=27.1;
t_in_degC[2]=30;
t_in_degC[3]=24.7;
t_in_degC[4]=25;
DateTime[]at_Time=new DateTime[5];
for(int i=0;i<5;i++)
{
at_Time[i]=new DateTime(2014,6,30,9+i,31,0);
Console.WriteLine("{0:MMM dd (ddd) HH:mm}",at_Time[i]," > "+t_in_degC+" °С");
}
Console.ReadKey(true);
}
}
}

shokirjon 19 окт 2015 18:30
9. Вывести k цифру последовательности 182764125... (кубы натуральных чисел).

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Mercurial 29 сен 2015 14:47
static void Main(string[] args)
{
DateTime[] date = new DateTime[3];
double[] t = new double[3];
int i = 0;
date[0] = new DateTime(2015, 12, 25, 23, 00, 00);
date[1] = new DateTime(2015, 12, 25, 23, 30, 00);
date[2] = new DateTime(2015, 12, 26, 00, 00, 00);

t[0] = 25.8;
t[1] = 27.3;
t[2] = 29.0;

foreach (DateTime inc in date)
{
Console.WriteLine(string.Format("{0:MMM dd (ddd) HH:mm} > {1:n1} °C", inc, t[i]));
i++;
}
Console.ReadKey();
}



Вадим 11 авг 2015 17:53
Сорри лишнего запостил, тащемто воть:


DateTime[] dateTime = new DateTime[3];
dateTime[0] = new DateTime(2015, 6, 30, 09, 31, 0);
dateTime[1] = new DateTime(2015, 6, 30, 10, 31, 0);
dateTime[2] = new DateTime(2015, 6, 30, 11, 31, 0);

float[] temperature = new float[3];
temperature[0] = 26.3F;
temperature[1] = 27.1F;
temperature[2] = 30.0F;

for (int i = 0; i < dateTime.Length; i++)
{
string str = String.Format("{0:MMM dd (ddd) HH:mm} > {1:n1} °C", dateTime[i], temperature[i]);
str = str.Substring(0, 1).ToUpper() + str.Remove(0,1);
Console.WriteLine(str);
}

TR 02 июн 2015 11:02
В примере - ошибка:
string formattedString = string.Format(new System.Globalization.CultureInfo("en-US"), "{0:dddd} Money - {1:c}", DateTime.Now, 15);
Console.WriteLine("{0:dddd} Money - {1:c}", DateTime.Now, 15); // "понедельник Money - 15,00 руб."

После указания CultureInfo("en-US") рубли пока не появятся. Шойгу еще только прогревает танки...

Александр_Бугай 22 май 2015 14:56
Если так?
static void Main(string[] args)
{
double []tempArray = new double[5];
string[] date = new string[5];
string datenow = DateTime.Now.ToString("MMM dd (ddd) HH:mm");
date[0] = datenow;
string newDate;
string newMinute;
int minute = Convert.ToInt32(datenow.Substring(15, 2));
newDate = date[0].Remove(15, 2);
for (int i = 0; i < 5; i++)
{
minute = minute + 1;
newMinute = Convert.ToString(minute);
date[i] = newDate + newMinute;
Console.WriteLine(date[i]);
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Input the " + i+1 + "temperature");
tempArray[i] = Convert.ToDouble(Console.ReadLine());
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine(date[i] + " > " + tempArray[i] + " C");
}
Console.ReadLine();
}
}

Inna 18 мар 2015 18:10
Ошиблась строчкой:
Console.Write(dt.ToString("dd MMM (ddd) HH:mm"));
вместо:
Console.Write(dt.ToString("dd MMM (dd) HH:mm"));

Inna 18 мар 2015 17:55
class Program
{
static void Main(string[] args)
{
string[] Data = new string[10];
double[] Temperature = { 5.6, 25, 10.2, 25, 23.6, 5, 25.6, 12, 15.4, 10.2 };
DateTime dt = DateTime.Now;
for (int i = 0; i < Data.Length; i++)
{
Console.Write(dt.ToString("dd MMM (dd) HH:mm"));
Console.WriteLine(" => {0,4:0.0} °C", Temperature[i]);
dt = dt.AddHours(1);
}
Console.ReadKey();
}
}

AlexWolf 28 фев 2015 00:15
Максим
---
Спасибо. Понял. Буду пробовать.

Oper
---
Понятно. Значит не стоит заморачиваться по этому поводу. Спасибо за отзыв. )

Oper 27 фев 2015 22:36
AlexWolf
---
Я в своем любительском проекте, крайне приближенном к этому ДЗ занимался построением графика температуры за определенный период, кратко говоря мне нужно было из БД выбрать дату и температуру и передать данные джаваскрипту для отрисовки. Я в цикле выбранную дату и температуру складывал в массив формата [дата, температура] и кучу таких массивов вкладывал в массив, получался огромный массив маленьких массивов, потом это конвертировал в json и передавал джаваскрипту.
Всё это дело у меня крутится на RaspberyPi, где ресурсы крайне ограничены (1 ядро 700 MГц ARMv6), и могу сказать, что данная операция - ничто по сравнению с расходом ресурсов на выборку данных из sqlite.

Максим 27 фев 2015 18:51
AlexWolf
---
1. Предпочтительно использовать массивы для того, для чего они предназначенные, и не пытаться изворотиться и разбить многомерные данные на несколько одномерных массивов. Если вас интересует скорость и производительность, вам стоит копнуть в сторону структур данных, массив - это всего лишь один из представителей. Деревья, связные списки, и другое.
2. Cтроку нужно конвертить в DateTime, чтобы форматироваь дату.

AlexWolf 27 фев 2015 17:49
Все сделал следуя строго условиям задачи. Но мне кажется было бы интереснее, если использовать не массив дат и времени а тип DataTime.
И как всегда пара вопросов :)
1 - Что по ресурсоемкости и скорости выполнения наиболее предпочтительно, много одномерных массивов или несколько многомерных?
2 - Если указать в аргументах дату (например 12.03.2015) вручную, как тип string. Как ее форматнуть, чтобы он поменял номер месяца 03 на его название МАРТ? Или он не сможет распознать дату?

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double[] temp = new double[] { 20, 22.5, 21.3, 19.3, 17.8, 18.3, 19, 21.2 };
string[] data = new string[] { "Июнь 15 (Ср) 00:00", "Июнь 15 (Ср) 06:00", "Июнь 15 (Ср) 12:00", "Июнь 15 (Ср) 18:00", "Июнь 16 (Чт) 00:00", "Июнь 16 (Чт) 06:00", "Июнь 16 (Чт) 12:00", "Июнь 16 (Чт) 18:00" };
for (int i = 0; i < 8; i++)
{
Console.WriteLine("{0:-10} > {1:00.0 °C}", data[i], temp[i]);
}
Console.ReadKey();
}
}
}

Oper 27 фев 2015 17:13
Согласно ТЗ:
using System;

namespace L28
{
class Program
{
static void Main(string[] args)
{
string[] datesArr = { "30.06.2014 09:31", "30.06.2014 10:31", "30.06.2014 11:31", "30.06.2014 12:31", "30.06.2014 13:31", "31.12.2014 08:17" };
float[] temperaturesArr = { 26.3f, 27.1f, 30f, 24.7f, 25f, -7.291f };

for (int i = 0; i < datesArr.Length; i++)
Console.WriteLine("{0:MMM dd (ddd) HH:mm} > {1:f1} °C", DateTime.Parse(datesArr[i]), temperaturesArr[i]);
Console.ReadKey();
}
}
}

Виталий 24 фев 2015 16:10
Сделал! Оказывается неправильно форматнул в Console.WriteLine():

class Program
{
static void Main(string[] args)
{

string[] time = new string[4] { "25.02.2015 12:00", "25.02.2015 13:00", "25.02.2015 14:00", "25.02.2015 15:00" };
string[] weather = new string[4] { " + 5", " + 1", " - 3", " - 5"};
for (int i = 0; i < 4; i++)
{
string.Format("<MMM dd (ddd) H:mm>", time[i]);
string.Format("<0#.0>", weather[i]);
Console.WriteLine(time[i] + weather[i]);
Console.ReadKey();
}
}
}

Виталий 24 фев 2015 12:58
В последнее время очень много ошибок. И, конечно же, это очередная. Вопрос как и прежде: где ошибка?

class Program
{
static void Main(string[] args)
{

string[] time = new string[4] { "25.02.2015 12:00", "25.02.2015 13:00", "25.02.2015 14:00", "25.02.2015 15:00" };
string[] weather = new string[4] { "+ 5", "+1", "- 3", "- 5"};
for (int i = 0; i < 3; i++)
{
Console.WriteLine("MMM dd (ddd) H:mm" , time[i] + "00.0", weather[i]);
Console.ReadKey();
}
}
}

Lev 29 дек 2014 18:49
double[] tem = new double[] {26.3, 27.1, 30, 24.7, 25};
string d = DateTime.Now.ToString("MMM dd (ddd) H:mm");
List<DateTime> dates = new List<DateTime>();
dates.Add(DateTime.Now);
dates.Add(DateTime.Now.AddHours(2));
dates.Add(DateTime.Now.AddHours(4));
dates.Add(DateTime.Now.AddHours(6));
dates.Add(DateTime.Now.AddHours(8));
int i = 0;
while (i < dates.Count)
{
Console.WriteLine("{0} > {1} °C", dates[i].ToString("MMM dd (ddd) H:mm"), tem[i]);
i++;
}
Console.ReadKey();

Максим 29 дек 2014 13:27
pinguin-linuxoid
---
Да, вы правы, исправил

pinguin-linuxoid 28 дек 2014 17:34
Уважаемый Админ - мне показалось что по контексту наоборот - при отрицательной ширине - пробелы с права а при положительной - с лева. Я могу ошибатся.

Диманиак 05 дек 2014 13:56
только название месяца не с большой буквы

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] dtime = new string[8] { "05.12.2014 0:00", "05.12.2014 3:00", "05.12.2014 6:00", "05.12.2014 9:00", "05.12.2014 12:00" , "05.12.2014 15:00", "05.12.2014 18:00", "05.12.2014 19:00"};
double[] temp = new double[8] { -3.2, -1.1, -0.8, 0, 1.3, -2.3, -4.2, -5.9 };
for (int i = 0; i < dtime.Length; i++)
{
Console.WriteLine("{0:MMM dd (ddd) HH:mm} > {1,6:f}", DateTime.Parse(dtime.ElementAt(i)), temp.ElementAt(i));
}
Console.ReadKey();
}
}
}

beronny 11 ноя 2014 23:46
Всё, проблема решена! Просто сразу написал как должно вывести, а потом в каком формате, вот:

int a = Convert.ToInt32(textBox1.Text);
double b = 0.333333333333334;
double c = Math.Pow(a,b);
label3.Text = "= " + c;
label3.Text = string.Format("{0:#.####}", c);
label3.ForeColor = Color.Red;

beronny 11 ноя 2014 23:42
Не, тогда получается тоже самое... Этими двумя присваиваниями и имел ввиду что выводить в таком формате, но после "=" .

Максим 10 ноя 2014 19:25
beronny
---
А что это за два последоватильных присваивания?

label3.Text = string.Format("{0:#.#}", c);
label3.Text = "= " + c;

Сначала Вы записали в label формативарованный текст, а дальше заменили его на "= " + c. Может Вы хотели добавить эту часть к формативарованному тексту так:
label3.Text += "= " + c;


beronny 10 ноя 2014 00:02
Админ, хэлп!)))
как сделать нужный формат, вроде написал как нужно, а выдаёт кучу нулей после запятой!

int a = Convert.ToInt32(textBox1.Text);
double b = 0.333333333333334;
double c = Math.Pow(a,b);
label3.Text = string.Format("{0:#.#}", c);
label3.Text = "= " + c;
label3.ForeColor = Color.Red;

Максим 02 окт 2014 14:43
Firik
---
Ну да, на место 0 подставляется DateTime.Now.AddHours(i), на место 1 - Temp[i]

Firik 02 окт 2014 12:46
указывается номер аргумента?

Firik 02 окт 2014 12:37
почему тут единица? {1:00.0}

Максим 04 июл 2014 15:05
cooleo
---
Да, отлично

cooleo 04 июл 2014 11:18
Может так?

double[] Temp = new double[] { 26.3, 27.1, 30, 24.7, 25 };
for (int i = 0; i < Temp.Length; i++)
{
Console.WriteLine("{0:MMM dd (ddd) hh:mm} > {1:00.0}",DateTime.Now.AddHours(i), Temp[i]);
}
Console.ReadKey();


Добавить комментарий:

Имя (обязат.)
E-mail (обязат., не публикуется)


Для вставки ваших программ пользуйтесь кнопкой "исходный код"
Вёрстка сайта с нуля

Уникальный Видеокурс!

"Научись верстать сайты и заработай на этом!"

Получить видеокурс

Подпишись на курс по программированию, и узнавай первым о новых уроках!

RSS подписка Страничка Вконтакте Мы в Twitter

Ошибка в тексте? Выделите ее мышкой и нажмите Ctrl+Enter
Поблагодарить автора: Номер карты (ПриватБанк)
5168 7572 4170 8660
WebMoney
R372544961915 U685637142028 Z999792764387
Наверх
Система Orphus