Учет формата строки Стиля в ASP.NET

, что если у меня есть два блока, которые генерируют строки, и я хочу сохранить все строки в одном массиве

Если блоки являются отдельными программными модулями или иным образом отключены, возможно, даже может Для выполнения в разных порядках вам нужна логика, которая может определить, заполнен ли целевой массив. Одним из решений является использование (частной) процедуры PL / SQL для управления этим.

procedure populate_varray 
     ( p_tgt in out name_options
       , p_new in name_options)
is
   n pls_integer;
begin
   if p_tgt is null 
         or p_tgt.count() = 0 
   then
     p_tgt := p_new;
   elsif  p_new is not null 
         and p_new.count() > 0
   then 
     n := p_tgt.count();
     for idx in 1 .. p_new.count() loop
       p_tgt.extend();
       p_tgt(n + idx) := p_new(idx);
     end loop;
   end if;
end populate_varray;

Примечание: непроверенный код, пожалуйста, прокомментируйте ниже, если есть ошибки:)

Вы бы назвали это так:

-- Block 1
....
populate_varray ( dd_name_options_c 
                  , name_options(string1, string2, string3, string4));
....
-- Block 2
....
populate_varray (dd_name_options_c  
                  , name_options(string5, string6) );
5
задан John Saunders 9 May 2010 в 05:23
поделиться

4 ответа

Игнорируя Ваши требования выравнивания, Вы могли использовать

number.ToString("€#,##0.00;(€#,##0.00);Zero")

к отрицательным числам скобки.

Для выравнивания чисел необходимо было бы отформатировать без обозначения денежной единицы и заполнить отформатированные числа сами пробелами, использование шрифта фиксированной ширины сделает это задание легче для Вас.

Править:

Это кажется Строкой. Формат является Вашим другом:

String.Format("{0,15:#,##0.00 ;(#,##0.00);-   }", number)

где 15 общая ширина вывода, и необходимо добавить этот текст к обозначению денежной единицы. (Снова, это выравнивается только в фиксированной ширине),

4
ответ дан 14 December 2019 в 04:48
поделиться

Нет никакого ярлыка строки формата (односимвольные с правилами по умолчанию) для обработки бухгалтерских форматов стиля (вот шпаргалка со строками доступного формата), таким образом, необходимо будет записать более определенный (как ответ Patrick) или собственный метод парсинга.

Требования выравнивания были бы характерны для того, как Вы отображаете их. Я предполагаю, что Вы используете таблицу, в этом случае Вы ограничены тем, какие поддержки HTML, и она не поддерживает бухгалтерское выравнивание стиля как Excel.

3
ответ дан 14 December 2019 в 04:48
поделиться

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

private static string OutputAsCur(decimal val)
{
    string format = "  #,##0.00 ; (#,##0.00);Zero";
    string frmt = val.ToString(format);
    return CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol + frmt.PadLeft(15, ' ');
}

Вот простое приложение в качестве примера для наблюдения его формат:

    static void Main(string[] args)
    {
        decimal d = 155.55m;

        Console.WriteLine(OutputAsCur(d));
        Console.WriteLine(OutputAsCur(d * -1));
        Console.WriteLine(OutputAsCur(1002.32m));
        Console.WriteLine(OutputAsCur(1002.32m * -1));
        Console.ReadLine();
     }
1
ответ дан 14 December 2019 в 04:48
поделиться

В этом блоге были некоторые различные обрисованные в общих чертах форматы, и этот, казалось, был близко к тому, что Вы искали:

int neg = -10;
int pos = 10;
// C or c (Currency): It represent how many decimal place of zeros to show.
String.Format("{0:C4}", pos);      //"$10.0000"
String.Format("{0:C4}", neg);      //"($10.0000)"

Это не обрабатывает дополнение (Вам, вероятно, придется зафиксировать это самим), но это действительно имеет надлежащую круглую скобку.

1
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: