Учитывая ваш ввод, который, как мы предполагаем, будет иметь 8, 9 или 10 символов и будет правильно отформатирован, например,
12/12/2020 (10 chars)
2/12/2020 (9 chars)
12/2/2020 (9 chars)
2/2/2020 (8 chars)
Мы можем создать C# 8.0 выражение-выражения , которая возвращает правильную строку, используя диапазоны / индексы на входе. Это, возможно, чрезмерно спроектировано, но может быть полезно, чтобы избежать выделения из-за разделения строк, а что нет.
Полная программа приведена ниже, и вы можете запустить ее с этим . NET Скрипка .
using System;
namespace Dates
{
class Program
{
static void Main(string[] args)
{
var input = "12/12/2020";
Console.WriteLine(GetWithoutSlashes(input));
input = "2/12/2020";
Console.WriteLine(GetWithoutSlashes(input));
input = "12/2/2020";
Console.WriteLine(GetWithoutSlashes(input));
input = "2/2/2020";
Console.WriteLine(GetWithoutSlashes(input));
}
static string GetWithoutSlashes(string input)
{
return input.Length switch
{
// First two digits (month), third/fourth digits (day), last 4 digits (year)
10 => $"{input[..2]}{input[3..5]}{input[^4..]}",
9 => input[1] == '/'
// Single digit month with zero before it, double digit day, last 4 digit year
? $"0{input[0]}{input[2..4]}{input[^4..]}"
// First two digits for month, single digit day with a zero before it, year
: $"{input[..2]}0{input[3]}{input[^4..]}",
// Single digit month, day with zero before each, last 4 digit year
8 => $"0{input[0]}0{input[2]}{input[^4..]}",
_ => throw new ArgumentException("Bad input!", nameof(input))
};
}
}
}