String.Format тот же код другой вид - PullRequest
3 голосов
/ 06 апреля 2011

У меня есть такой код;

GridView1.FooterRow.Cells[11].Text = String.Format("{0:c}", sumKV)

На моем компьютере этот код дает такой результат;

enter image description here

Но когда я загружаю этокод для моей виртуальной машины выглядит так:

enter image description here

TL означает турецкую лиру.Но я не хочу показывать валюту.Я просто хочу цифры.

Я также не хочу менять форматирование чисел.(Например, 257,579,02)

Как мне удалить только TL в этом коде?

Ответы [ 4 ]

3 голосов
/ 06 апреля 2011

Я бы использовал это:

var cultureWithoutCurrencySymbol = 
    (CultureInfo)CultureInfo.CurrentCulture.Clone();
cultureWithoutCurrencySymbol.NumberFormat.CurrencySymbol = "";
GridView1.FooterRow.Cells[11].Text = 
            String.Format(cultureWithoutCurrencySymbol, "{0:c}", sumKV).Trim();

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

ОБНОВЛЕНИЕ:

  • Теперь он даже компилируется ...; -)
  • Добавлен Trim(), потому что после форматированного числа все еще есть пробел.
1 голос
/ 06 апреля 2011

Другой вариант - полностью отключить символ валюты для текущего потока:

private static NumberFormatInfo SetNoCurrencySymbol()
{
    CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
    NumberFormatInfo LocalFormat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();

    NumberFormatInfo ret = culture.NumberFormat;

    LocalFormat.CurrencySymbol = "";
    culture.NumberFormat = LocalFormat;

    // Add the culture to the current thread
    Thread.CurrentThread.CurrentCulture = culture;

    return ret;
} 

Таким образом вы измените меньше кода.Вы всегда можете изменить его позже:

 NumberFormatInfo origNumberFormat  = SetNoCurrencySymbol();

 string x = String.Format("{0:c}", 55);

 CultureInfo.CurrentCulture.NumberFormat = origNumberFormat;

 string y = String.Format("{0:c}", 55);
0 голосов
/ 06 апреля 2011

Если вы не хотите показывать валюту, не используйте код форматирования валюты - {0: c}.Возможно, попробуйте что-то вроде следующего:

GridView1.FooterRow.Cells[11].Text = String.Format("{0:G}", sumKV);

См. Эту статью - String.Format удваивается

0 голосов
/ 06 апреля 2011

Поскольку вы используете String.Format только со строкой форматирования, sumKV форматируется в соответствии с культурой пользовательского интерфейса, фактически используемой в вашем приложении.

GridView1.FooterRow.Cells[11].Text = String.Format("{0:c}", sumKV),

Чтобы избавиться с символом валюты, используйте InvariantCulture в String.Format таким образом:

String.Format(CultureInfo.InvariantCulture, "{0:c}", sumKV);
...