【发布时间】:2017-05-05 05:29:30
【问题描述】:
我的目标是省略 author_name 以 pipeline 开头和 author_email 以 pipeline@gmail.com 开头的数据strong> 如果项目名称以 ej2 或 Ej2 开头。
我有以下代码。这段代码完全符合我的预期。
if ((author_name != "pipeline" && author_email != "pipeline@gmail.com") &&
(projectName.StartsWith("ej2") == false || projectName.StartsWith("Ej2") == false))
{
// some operations
}
我的 FxCop 说下面的违规使用上面的方法。
严重性代码描述项目文件行抑制状态 警告 CA1307 因为 'string.StartsWith(string)' 的行为可能会因当前用户的区域设置而异,所以将 'GetProjectDetailsByApi.DevelopmentBranchStatus(List)' 中的调用替换为对 'string.开始(字符串,字符串比较)'。如果将向用户显示“string.StartsWith(string, StringComparison)”的结果,例如在对列表框中显示的项目列表进行排序时,指定“StringComparison.CurrentCulture”或“StringComparison.CurrentCultureIgnoreCase”作为“字符串比较”参数。如果比较不区分大小写的标识符,例如文件路径、环境变量或注册表项和值,请指定“StringComparison.OrdinalIgnoreCase”。否则,如果比较区分大小写的标识符,请指定“StringComparison.Ordinal”。
所以我改变了我的代码,如下所示。但我只有
if (author_name.Equals("pipeline", StringComparison.OrdinalIgnoreCase) == false
&& author_email.Equals("pipeline@gmail.com", StringComparison.OrdinalIgnoreCase) == false
&& projectName.StartsWith("ej2", StringComparison.OrdinalIgnoreCase) == false)
{
//mY code
}
但上面的代码过滤了所有 ej2 项目。但我只想过滤具有 author_name 和 author_email 的项目是 pipeline 和 pipeline@gmail.com分别。
如果我更改条件projectName.StartsWith("ej2", StringComparison.OrdinalIgnoreCase) == **true** 意味着,它只给出仅启动ej2的项目。
我该怎么做?
【问题讨论】:
标签: c# visual-studio-2015 string-comparison fxcop