Форматировать строку в определенном формате ##. ### / ##. ###

У меня есть требование отформатировать всю мою строку в формате ##. ### / ##. ### Пример: если входное значение 3/4, мне нужно отформатировать его до 03.000 / 04.000 Если мое входное значение равно 1,4 /2.0, то мне нужно отформатировать его до 01.400 / 02.000. Я пробовал следующее, которое дает ожидаемый результат. Может ли кто-нибудь подсказать, есть ли какая-либо прямая функция или лучший способ сделать это.

using System; 
class Test { 
// Main Method 
static void Main(string[] args) 
{ 
    
    String input = "23.3/4.0"; 
    String[] splittedValue = input.Split("https://codereview.stackexchange.com/"); 
    Decimal numerator=Convert.ToDecimal(splittedValue[0]);
    Decimal denominator=Convert.ToDecimal(splittedValue[1]);
    String format = "00.000";
    String test1  =  numerator.ToString(format);
    String test2 =  denominator.ToString(format);
    
}
}

1 ответ
1

Один из способов быть более кратким — разделить строку на "https://codereview.stackexchange.com/" и '.'и восстановите 2 струны с заполнением. Это устраняет 2 преобразования и дает требуемый формат:

static void Main(string[] args) 
{ 
    
    var input = "23.3/4.0";
    var splittedValue = input.Split( "https://codereview.stackexchange.com/", '.' );
    var num = FormatFracParts( splittedValue[0], splittedValue[1] );
    var den = FormatFracParts( splittedValue[2], splittedValue[3] );
    
}

private static string FormatFracParts(params string[] parts)
{
    if(parts.Length != 2)
    {
        throw new ArgumentException( @"'parts' must have exactly 2 elements." );
    }
    return $"{parts[0].PadLeft(2, '0')}.{parts[1].PadRight(3, '0')}";
}

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *