Можете ли вы включить код проверки условий в строку формата? - PullRequest
1 голос
/ 07 апреля 2009

У меня есть пользовательский элемент управления, который является частью списка. Текст, который должен отображаться, устанавливается путем присвоения значения его свойству Text. Во время выполнения этот текст загружается из базы данных. Я хочу добавить к этому тексту строку «Toelichting:» (по-голландски «Explanation»). Я могу сделать это, установив для свойства FormatString элемента управления следующее:

"Toelichting: {0}"

Теперь, если загруженный текст является пустой строкой, я хочу отобразить «Toelichting: & ndash;», то есть с чертой в конце. В противном случае я хочу отобразить «Toelichting: MyText». Можно ли добавить код проверки условий в FormatString, чтобы я мог проверить, не является ли параметр пустым?

Ответы [ 4 ]

5 голосов
/ 07 апреля 2009

Почему не только это?

string.Format("Toelichting: {0}", string.IsNullOrEmpty(explanation) ? "–" : explanation);

Не думаю, что есть способ встроить это в строку формата.

1 голос
/ 07 апреля 2009

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

foo = string.Format (новый MyFormatter (), "Toelichting: {0: объяснение}", строка);

MyFormatter будет реализовывать IFormatProvider и ICustomFormatter.

Проверьте это ...

.NET: Существует ли форма String.Format для вставки значения свойства объекта в строку?

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

1 голос
/ 07 апреля 2009

Вы можете сделать это так:

String.Format("Toelichting: {0}", 
    (String.IsNullOrEmpty(yourstr)) ? "-" : yourstr);

Не идеально, но относительно компактно и читабельно.

1 голос
/ 07 апреля 2009

Нет, это невозможно.

...