Как преобразовать квартал, который предоставляется как "FY18 Q1", чтобы произвести "2018.4" в C #, используя REGEX? - PullRequest
1 голос
/ 13 марта 2019

Код ниже работает нормально.Но я хочу получить это через Regex.

private decimal GetQuarter(string quarter)
{
  var unformattedQuarter = "20" + quarter[2] + quarter[3] + "." + quarter[6];
  return Convert.ToDecimal(unformattedQuarter);
}

Ввод

FY18 Q4
FY19 Q1
FY19 Q2

Выход

2018,4
2019,1
2019,2

Ответы [ 2 ]

5 голосов
/ 13 марта 2019

Вы можете использовать шаблон

FY(\d{2}) Q(\d)

И заменить спички на

20$1.$2

Пример

var input = @"FY18 Q4\r\nFY19 Q1\r\nFY19 Q2";
var pattern = @"FY(\d{2}) Q(\d)";
var replacement = "20$1.$2";
Console.WriteLine(Regex.Replace(input, pattern, replacement));

выход

2018.4
2019.1
2019.2

Полная демонстрация здесь


Объяснение

enter image description here

Примечание : Добавление 20 кажется немного проблематичным, и его следует использовать с осторожностью

0 голосов
/ 13 марта 2019

Используя следующий код, вы можете извлечь первое и второе вхождения чисел из строки в список, а затем объединить их:

    string n = "FY18 Q1";
    Regex digits = new Regex(@"[\d]+");   
    var list = digits.Matches(n);
    var finalValue = "20" + list [0] + "." + list [1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...