1

在比较用户将看到但不会修改/更改的硬编码字符串时,文化信息很重要。

我假设不会,但我只是想安全。

例子:

static void Main()
{
    string hardString = "IAMHardCodei";
    string hardString2 = "IamHardCodei";
    //Compare hardString and hardString2, ignoring case, 
    //and then do stuff based on that result
}
4

3 回答 3

1

您可以InvariantCultureIgnoreCase用于比较

hardString.Equals(hardString2, StringComparison.InvariantCultureIgnoreCase);
于 2015-04-25T16:10:29.740 回答
1

CurrentCulture如果您在进行比较时依赖默认值,则文化规则甚至与硬编码字符串相关。这是 MSDN 文档中的一个教科书示例:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
Debug.Assert("file" == "FILE".ToLower()); // Passes

Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
Debug.Assert("file" == "FILE".ToLower()); // Fails

通过不区分大小写的比较,您在土耳其的用户计算机不会思考file并且FILE是相同的,而在美国它们是相同的。

于 2015-04-25T16:15:17.117 回答
0

当字符串比较是“仅编程字符串”时(即,如您指定的那样,用户不能直接使用或编辑它们),对字符串比较的一般建议是:StringComparison.Ordinal[IgnoreCase].

请参阅此 SO 帖子(其中可能是重复的):通常最好使用哪个 - StringComparison.OrdinalIgnoreCase 或 StringComparison.InvariantCultureIgnoreCase?

于 2015-04-25T16:10:22.500 回答