Do tnet Core - получение предупреждения о 'string.Replace (string, string?)' Говоря use 'string.Replace (string, string ?, System.StringComparison)' - PullRequest
1 голос
/ 06 января 2020

Я получаю следующее предупреждение о "Заменить"

> Severity  Code    Description Project File    Line    Suppression State
> Warning   CA1307  The behavior of 'string.Replace(string, string?)' could
> vary based on the current user's locale settings. Replace this call in
> 'JobsLedger.API.ControllerServices.Common.OrderAndFIlterHelpers.ODataProcessQuery.ProcessQuery(string)'
> with a call to 'string.Replace(string, string?,
> System.StringComparison)'.    JobsLedger.API  C:\Users\simon\OneDrive\Documents\1.0
> - AURELIA\1.0 - JobsLedgerSPA -ASPNET CORE 3.1\JobsLedger.API\ControllerServices\Common\OrderAndFIlterHelpers\ODataProcessQuery.cs    38  Active

Я не знаю, как перенастроить следующее, чтобы учесть 'System.StringComparison':

                            .Replace("and", "&")
                            .Replace("substringof", string.Empty)
                            .Replace("(", string.Empty)
                            .Replace(")", string.Empty)
                            .Replace("'", string.Empty)
                            .Replace(" ", string.Empty)
                            .Replace("eq", ",")

Каждый В строке появилось предупреждение ..

Я использую VS2019, и эти предупреждения приходят из компилятора Roslyn. Я хотел бы избавиться от предупреждений .. как мне переписать это, чтобы учесть часть замены System.StringComparison?

1 Ответ

2 голосов
/ 06 января 2020

просто ... скажите ему, какой тип сравнения вы хотите; например, для случая игнорирования порядкового номера замените:

    .Replace("and", "&", StringComparison.OrdinalIgnoreCase)
    .Replace("substringof", string.Empty, StringComparison.OrdinalIgnoreCase)
    .Replace("(", string.Empty, StringComparison.OrdinalIgnoreCase)
    .Replace(")", string.Empty, StringComparison.OrdinalIgnoreCase)
    .Replace("'", string.Empty, StringComparison.OrdinalIgnoreCase)
    .Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase)
    .Replace("eq", ",", StringComparison.OrdinalIgnoreCase);

Для описания того, что делает каждый параметр, смотрите StringComparison. Вообще говоря, вы не должны использовать CurrentCulture / CurrentCultureIgnoreCase для жестко запрограммированной замены системы; замена на основе культуры более типична для замены, обращенной к пользователю (подумайте: ctrl + f ). В качестве дополнительного примечания, на самом деле нет смысла использовать string.Empty по сравнению с более ясным (IMO) "".

...