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.

questionAnswers(6)

yourAnswerToTheQuestion