From 7b6f2fedf1080c0ea96f4975f82700db3e12d783 Mon Sep 17 00:00:00 2001 From: Serghei Cebotari Date: Tue, 14 Jan 2025 05:59:55 +0000 Subject: Add devcontainers --- RhSolutions.SkuParser.Api/Models/Product.cs | 128 ++++++++++++++-------------- 1 file changed, 64 insertions(+), 64 deletions(-) (limited to 'RhSolutions.SkuParser.Api/Models/Product.cs') diff --git a/RhSolutions.SkuParser.Api/Models/Product.cs b/RhSolutions.SkuParser.Api/Models/Product.cs index fd9ea45..26a7392 100644 --- a/RhSolutions.SkuParser.Api/Models/Product.cs +++ b/RhSolutions.SkuParser.Api/Models/Product.cs @@ -1,65 +1,65 @@ -using System.Text.RegularExpressions; - -namespace RhSolutions.SkuParser.Models; - -public record Product -{ - /// - /// Артикул РЕХАУ в заданном формате - /// - public required string Sku - { - get => _sku; - set - { - _sku = IsValudSku(value) - ? value - : throw new ArgumentException("$Неверный артикул: {value}"); - } - } - private string _sku = string.Empty; - private const string _parsePattern = @"(?[1\s]|^|\b)(?
\d{6})(?[\s13-])(?\d{3})(\b|$)"; - private const string _validnessPattern = @"^1\d{6}[1|3]\d{3}$"; - - private static bool IsValudSku(string value) - { - return Regex.IsMatch(value.Trim(), _validnessPattern); - } - private static string GetSku(Match match) - { - string lead = match.Groups["Lead"].Value; - string article = match.Groups["Article"].Value; - string delimiter = match.Groups["Delimiter"].Value; - string variant = match.Groups["Variant"].Value; - - if (lead != "1" && delimiter == "-") - { - return $"1{article}1{variant}"; - } - else - { - return $"{lead}{article}{delimiter}{variant}"; - } - } - - /// - /// Проверка строки на наличие в ней артикула РЕХАУ - /// - /// Входная строка для проверки - /// Артикул, если найден. null - если нет - /// Если артикул в строке есть возвращает true, Если нет - false - public static bool TryParse(string value, out Product? product) - { - product = null; - MatchCollection matches = Regex.Matches(value, _parsePattern); - if (matches.Count == 0) - { - return false; - } - string sku = GetSku(matches.First()); - product = new Product() { Sku = sku }; - return true; - } - public override int GetHashCode() => Sku.GetHashCode(); - public override string ToString() => Sku; +using System.Text.RegularExpressions; + +namespace RhSolutions.SkuParser.Models; + +public record Product +{ + /// + /// Артикул РЕХАУ в заданном формате + /// + public required string Sku + { + get => _sku; + set + { + _sku = IsValudSku(value) + ? value + : throw new ArgumentException("$Неверный артикул: {value}"); + } + } + private string _sku = string.Empty; + private const string _parsePattern = @"(?[1\s]|^|\b)(?
\d{6})(?[\s13-])(?\d{3})(\b|$)"; + private const string _validnessPattern = @"^1\d{6}[1|3]\d{3}$"; + + private static bool IsValudSku(string value) + { + return Regex.IsMatch(value.Trim(), _validnessPattern); + } + private static string GetSku(Match match) + { + string lead = match.Groups["Lead"].Value; + string article = match.Groups["Article"].Value; + string delimiter = match.Groups["Delimiter"].Value; + string variant = match.Groups["Variant"].Value; + + if (lead != "1" && delimiter == "-") + { + return $"1{article}1{variant}"; + } + else + { + return $"{lead}{article}{delimiter}{variant}"; + } + } + + /// + /// Проверка строки на наличие в ней артикула РЕХАУ + /// + /// Входная строка для проверки + /// Артикул, если найден. null - если нет + /// Если артикул в строке есть возвращает true, Если нет - false + public static bool TryParse(string value, out Product? product) + { + product = null; + MatchCollection matches = Regex.Matches(value, _parsePattern); + if (matches.Count == 0) + { + return false; + } + string sku = GetSku(matches.First()); + product = new Product() { Sku = sku }; + return true; + } + public override int GetHashCode() => Sku.GetHashCode(); + public override string ToString() => Sku; } \ No newline at end of file -- cgit v1.2.3