Jak użyć NumberFormatInfo do usunięcia nawiasów dla wartości ujemnych
Obecnie używamy następujących elementów do tworzenia wartości w dolarach amerykańskich w naszej aplikacji internetowej:
string.Format("{0:C0}", dollarValue );
W tym przykładzie, jeśli wartość dollarValue wynosi 145, zobaczymy: 145 USD. Jeśli wynosi -145, zobaczymy (145 USD) zamiast 145 USD. Zauważ, że dla nas dollarValue jest podwójnym, ale może to być dowolny typ liczbowy. Myślę.
W każdym razie chcę, żeby było to 145 USD lub 145 USD.
Teraz, zgodnie z moimi badaniami, możliwe jest wykonanie tego przy użyciu klasy NumberFormatInfo. Nie wiem, jak go użyć i nie mogę znaleźć żadnego poprawnego przykładu. Widziałem to pytanie tutaj:C # tworzenie niestandardowej informacji NumberFormatInfo w celu wyświetlenia „Free”, gdy wartość waluty wynosi 0,00 USD ale przykład z MSDN połączony z tym pytaniem wydaje się nieco inny od tego, co naprawdę chcę zrobić.
Zdaję sobie sprawę, że muszę coś zrobić:
double dollarValue = -145d;
string myMoney = dollarValue.ToString( "C0", someIFormatProvider );
gdzie prawdopodobny jest someFormatProvider typu NumberFormatInfo. Teraz zrobiłem to:
NumberFormatInfo ni = new NumberformatInfo();
ni.CurrencyNegativePattern = 1; // The value 1 should mean not to use parenthesis
string myMoney = dollarValue.ToString( "C0", ni );
... i otrzymuję wyjątek „Instancja jest tylko do odczytu”. Podczas gdy „dokumentacja” dla właściwości CurrencyNegativePattern mówi, że możesz ZESTAWIĆ i DOSTAĆ wartość, najwyraźniej nie możesz. Ponadto NumberFormatInfo jest klasą zamkniętą. Nie mogę łatwo utworzyć nowej klasy opartej na niej i przesłonić wartość.
Nie wiem, jak sobie z tym poradzić. W tej chwili moim obejściem jest po prostu zanegowanie mojej wartości ujemnej i uzyskanie pozytywnego wyniku, który robięstring.Format(...)
jeszcze raz. Tak, zdaję sobie sprawę, że przed tym nie ma negatywnego znaku, ale oczywiście można to łatwo rozwiązać, dodając w razie potrzeby „-” przed wynikiem.
Czy ktoś byłby w stanie dostarczyć mi praktycznego przykładu na to, jak skutecznie wykorzystać klasę NumbefFormatInfo w tej sytuacji? Dzięki.