diff --git a/vs4win/Chapter08/WorkingWithRegularExpressions/Program.Regexs.cs b/vs4win/Chapter08/WorkingWithRegularExpressions/Program.Regexs.cs new file mode 100644 index 0000000..43da104 --- /dev/null +++ b/vs4win/Chapter08/WorkingWithRegularExpressions/Program.Regexs.cs @@ -0,0 +1,10 @@ +using System.Text.RegularExpressions; // [GeneratedRegex] + +partial class Program +{ + [GeneratedRegex(digitsOnlyText)] + private static partial Regex DigitsOnly(); + + [GeneratedRegex(commaSeparatorText)] + private static partial Regex CommaSeparator(); +} diff --git a/vs4win/Chapter08/WorkingWithRegularExpressions/Program.Strings.cs b/vs4win/Chapter08/WorkingWithRegularExpressions/Program.Strings.cs new file mode 100644 index 0000000..3f63765 --- /dev/null +++ b/vs4win/Chapter08/WorkingWithRegularExpressions/Program.Strings.cs @@ -0,0 +1,14 @@ +using System.Diagnostics.CodeAnalysis; // [StringSyntax] + +partial class Program +{ + [StringSyntax(StringSyntaxAttribute.DateTimeFormat)] + const string fullDateTime = "dddd, d MMMM yyyy"; + + [StringSyntax(StringSyntaxAttribute.Regex)] + const string digitsOnlyText = @"^\d+$"; + + [StringSyntax(StringSyntaxAttribute.Regex)] + const string commaSeparatorText = + "(?:^|,)(?=[^\"]|(\")?)\"?((?(1)[^\"]*|[^,\"]*))\"?(?=,|$)"; +} \ No newline at end of file diff --git a/vs4win/Chapter08/WorkingWithRegularExpressions/Program.cs b/vs4win/Chapter08/WorkingWithRegularExpressions/Program.cs index 5d4250e..3db2488 100644 --- a/vs4win/Chapter08/WorkingWithRegularExpressions/Program.cs +++ b/vs4win/Chapter08/WorkingWithRegularExpressions/Program.cs @@ -3,7 +3,7 @@ Write("Enter your age: "); string input = ReadLine()!; // null-forgiving -Regex ageChecker = new(@"^\d+$"); +Regex ageChecker = DigitsOnly(); if (ageChecker.IsMatch(input)) { @@ -32,8 +32,7 @@ foreach (string film in filmsDumb) WriteLine(film); } -Regex csv = new( - "(?:^|,)(?=[^\"]|(\")?)\"?((?(1)[^\"]*|[^,\"]*))\"?(?=,|$)"); +Regex csv = CommaSeparator(); MatchCollection filmsSmart = csv.Matches(films); diff --git a/vscode/Chapter08/WorkingWithRegularExpressions/Program.Regexs.cs b/vscode/Chapter08/WorkingWithRegularExpressions/Program.Regexs.cs new file mode 100644 index 0000000..43da104 --- /dev/null +++ b/vscode/Chapter08/WorkingWithRegularExpressions/Program.Regexs.cs @@ -0,0 +1,10 @@ +using System.Text.RegularExpressions; // [GeneratedRegex] + +partial class Program +{ + [GeneratedRegex(digitsOnlyText)] + private static partial Regex DigitsOnly(); + + [GeneratedRegex(commaSeparatorText)] + private static partial Regex CommaSeparator(); +} diff --git a/vscode/Chapter08/WorkingWithRegularExpressions/Program.Strings.cs b/vscode/Chapter08/WorkingWithRegularExpressions/Program.Strings.cs new file mode 100644 index 0000000..3f63765 --- /dev/null +++ b/vscode/Chapter08/WorkingWithRegularExpressions/Program.Strings.cs @@ -0,0 +1,14 @@ +using System.Diagnostics.CodeAnalysis; // [StringSyntax] + +partial class Program +{ + [StringSyntax(StringSyntaxAttribute.DateTimeFormat)] + const string fullDateTime = "dddd, d MMMM yyyy"; + + [StringSyntax(StringSyntaxAttribute.Regex)] + const string digitsOnlyText = @"^\d+$"; + + [StringSyntax(StringSyntaxAttribute.Regex)] + const string commaSeparatorText = + "(?:^|,)(?=[^\"]|(\")?)\"?((?(1)[^\"]*|[^,\"]*))\"?(?=,|$)"; +} \ No newline at end of file diff --git a/vscode/Chapter08/WorkingWithRegularExpressions/Program.cs b/vscode/Chapter08/WorkingWithRegularExpressions/Program.cs index 5d4250e..3db2488 100644 --- a/vscode/Chapter08/WorkingWithRegularExpressions/Program.cs +++ b/vscode/Chapter08/WorkingWithRegularExpressions/Program.cs @@ -3,7 +3,7 @@ Write("Enter your age: "); string input = ReadLine()!; // null-forgiving -Regex ageChecker = new(@"^\d+$"); +Regex ageChecker = DigitsOnly(); if (ageChecker.IsMatch(input)) { @@ -32,8 +32,7 @@ foreach (string film in filmsDumb) WriteLine(film); } -Regex csv = new( - "(?:^|,)(?=[^\"]|(\")?)\"?((?(1)[^\"]*|[^,\"]*))\"?(?=,|$)"); +Regex csv = CommaSeparator(); MatchCollection filmsSmart = csv.Matches(films);