2009-02-12 14 views
13

ile kullanmak için özel bir para birimi biçimine ihtiyacım var C# içinde String.Format ("{0: c}", somevalue) kullanmaya çalışıyorum ama çıktının nasıl yapılandırılacağını belirleyen zor bir zaman yaşıyorum ihtiyaçlarımı karşıla. İşte benim ihtiyaçları şunlardır: 1,00 $ String.Format

  • boş
  • 1.00 çıkışlarına

    1. 0 çıkışları 10,00 $
    2. -10,00 çıkışları $ 1,000.00

    I $ 100.00

  • 1000.00 çıkışları için 100.00 çıkışlar 'String.Format' ("{0: c}", somevalue) 'yi denedim ancak sıfır değerleri için istediğim gibi olmayan $ 0.00'luk çıktılar. Ayrıca String.Format ("{0: $ 0,0.00; $ (0,0.00); #}", somevalue) denedim, ancak 1.0 için $ 01.00 çıktı. String.Format ("{0: $ 0.00; $ (0.00); #}", somevalue) çoğu vaka için çalışır, ancak somevalue 1000.00 olduğunda çıkış $ 1000.00 olur.

    Yukarıdaki 5 davanın tamamına uyan bir biçim var mı? Okuduğum tüm belgeler sadece temelleri detaylandırıyor ve bu tür senaryolara değinmiyor. Böyle

  • +0

    (para> 0) çıktı metni; – MrFox

    cevap

    19

    Eğer

    string.Format("{0:$#,##0.00;($#,##0.00);''}", value) 
    

    kullanıyorsanız Sıfır değeri ve diğer değerler için "" alacak çok düzgün biçimlendirilmiş olmalıdır.

    +0

    Bu aradığım şey. Bu formatı bir Repeater'da yapıyorum ve basit ve özlü bir şey istedim. – Notorious2tall

    +0

    Andrew'un cevabı da işe yaradı ve bunu codebehind'de yapıyor olsaydım, onun çözümü ile giderdim ve String.Format'ı bulmaya bile çalışmazdım. Ama ben zarif çözümü arıyordum. Kimse bunun hakkında aklımı okuyamazdı. :) – Notorious2tall

    +0

    +1 benden .. mükemmel .. bana bu konuda nasıl çalıştığını biraz ayrıntılı olarak açıklar mısınız? –

    4

    deneyin şey:

    String currency = (number == 0) ? String.Empty : number.ToString("c"); 
    
    4

    Tüm veri değerleri için tutarlı bir şekilde aynı veri türünü kullanıyor olmanıza bağlı olarak, vakanın her zaman karşılanmasını sağlayacak bir uzantı yöntemi yazabilirsiniz. Örneğin ondalık türü kullanıyormuş:

    public static string ToCurrencyString (this decimal value) 
    { 
        if (value == 0) 
        return String.Empty; 
        return value.ToString ("C"); 
    } 
    
    0

    "C" para biçimleri büyük

    // one way 
    string.Format("{0:$#,##0.00;($#,##0.00);''}", somevalue) 
    
    // another way 
    somevalue.ToString("$#,##0.00;($#,##0.00);''") 
    

    ikinci teknik eğer o kod tarzı gibi daha "akıcı" hisseder: 0. için Buraya 0 size boş verin kullandığım benzeyen iki yol, bir yukarıda belirtilmiş olduğu üzere (yaptığım gibi).

    İlgili konular