From fd1f1c355984f76070d8e32c891e6bac0bd96fdf Mon Sep 17 00:00:00 2001 From: Martin Costello Date: Tue, 7 Jul 2020 00:49:38 +0100 Subject: [PATCH] Use preferred overloads of string.Split() (#23712) * Use preferred overloads of string.Split * Revert TrimEntries for netstandard2.0 Revert usage of StringSplit.TrimEntries for projects that target netstandard2.0. Co-authored-by: Levi Broderick --- .../Hosting/src/Internal/WebHostOptions.cs | 17 ++--------------- .../Routing/src/ParameterPolicyActivator.cs | 4 +--- src/Mvc/Mvc.Core/src/BindAttribute.cs | 11 +---------- .../Mvc.ViewFeatures/src/RemoteAttributeBase.cs | 14 +------------- 4 files changed, 5 insertions(+), 41 deletions(-) diff --git a/src/Hosting/Hosting/src/Internal/WebHostOptions.cs b/src/Hosting/Hosting/src/Internal/WebHostOptions.cs index 1f78e3e255..9dc34581af 100644 --- a/src/Hosting/Hosting/src/Internal/WebHostOptions.cs +++ b/src/Hosting/Hosting/src/Internal/WebHostOptions.cs @@ -76,21 +76,8 @@ namespace Microsoft.AspNetCore.Hosting private IReadOnlyList Split(string value) { - if (string.IsNullOrWhiteSpace(value)) - { - return Array.Empty(); - } - - var list = new List(); - foreach (var part in value.Split(';', StringSplitOptions.RemoveEmptyEntries)) - { - var trimmedPart = part; - if (!string.IsNullOrEmpty(trimmedPart)) - { - list.Add(trimmedPart); - } - } - return list; + return value?.Split(';', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries) + ?? Array.Empty(); } } } diff --git a/src/Http/Routing/src/ParameterPolicyActivator.cs b/src/Http/Routing/src/ParameterPolicyActivator.cs index ab18e7efe8..b83c5c186b 100644 --- a/src/Http/Routing/src/ParameterPolicyActivator.cs +++ b/src/Http/Routing/src/ParameterPolicyActivator.cs @@ -100,9 +100,7 @@ namespace Microsoft.AspNetCore.Routing } else { - var arguments = !string.IsNullOrEmpty(argumentString) - ? argumentString.Split(',').Select(argument => argument.Trim()).ToArray() - : Array.Empty(); + var arguments = argumentString?.Split(',', StringSplitOptions.TrimEntries) ?? Array.Empty(); // We want to find the constructors that match the number of passed in arguments // We either want a single match, or a single best match. The best match is the one with the most diff --git a/src/Mvc/Mvc.Core/src/BindAttribute.cs b/src/Mvc/Mvc.Core/src/BindAttribute.cs index fe4f9e7996..409237e40e 100644 --- a/src/Mvc/Mvc.Core/src/BindAttribute.cs +++ b/src/Mvc/Mvc.Core/src/BindAttribute.cs @@ -71,15 +71,6 @@ namespace Microsoft.AspNetCore.Mvc } private static IEnumerable SplitString(string original) - { - if (string.IsNullOrEmpty(original)) - { - return Array.Empty(); - } - - var split = original.Split(',').Select(piece => piece.Trim()).Where(piece => !string.IsNullOrEmpty(piece)); - - return split; - } + => original?.Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries) ?? Array.Empty(); } } diff --git a/src/Mvc/Mvc.ViewFeatures/src/RemoteAttributeBase.cs b/src/Mvc/Mvc.ViewFeatures/src/RemoteAttributeBase.cs index 46b06b54a0..ef0a756acd 100644 --- a/src/Mvc/Mvc.ViewFeatures/src/RemoteAttributeBase.cs +++ b/src/Mvc/Mvc.ViewFeatures/src/RemoteAttributeBase.cs @@ -173,19 +173,7 @@ namespace Microsoft.AspNetCore.Mvc } private static IEnumerable SplitAndTrimPropertyNames(string original) - { - if (string.IsNullOrEmpty(original)) - { - return Array.Empty(); - } - - var split = original - .Split(',') - .Select(piece => piece.Trim()) - .Where(trimmed => !string.IsNullOrEmpty(trimmed)); - - return split; - } + => original?.Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries) ?? Array.Empty(); private void CheckForLocalizer(ClientModelValidationContext context) {