Условный String.Format на целое число - PullRequest
0 голосов
/ 06 ноября 2018

Требуется проверить, является ли условная строка. Форматирование возможно в C # на основе значения числа.

Например

для логического типа данных

bool rvalue = false;
string s = string.Format("{0:X;0;Y}", rvalue.GetHashCode());

это вернет Y.

Аналогично, есть ли возможность записи условия внутри строки. Формат: if number>2 then print X else print Y

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Вы можете сделать это следующим образом;

   bool rvalue = false;
                    string s = string.Format("{0:X;0;Y}",
                    rvalue ? 0 : 1);
0 голосов
/ 06 ноября 2018

Почему бы просто не создать свою строку формата впереди:

string format = rvalue ? "0:X" : "0:Y";
var result = myInput.Format(format);

Довольно ясно и легко расширяется, когда у вас более сложные условия:

switch (whateverCondition)
{
    case 1: format = "0:Z"; break;
    case 2: format = "0:X"; break;
    case 3: format = "0:Y"; break;
    default: format = "whatever";
}
0 голосов
/ 06 ноября 2018

Мне потребовалось некоторое время, чтобы понять, что вы пытались сделать с этим выражением, но, думаю, я понял это сейчас.

Лучшее, что я могу придумать сейчас, это:

int number = 3;
string s = string.Format($"{(number > 2 ? "X" : "Y")}");

Или:

int number = 3;
string s = string.Format("{0:X;0;Y}", number > 2 ? 1 : 0);

Но это будет иметь больше смысла для меня:

int number = 3;
string s = number > 2 ? "X" : "Y";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...