什么.net StringComparison类型最适合主机名比较?

时间:2014-10-09 16:21:33

标签: .net http globalization

对于Equals,我应该

hostname.Equals(theHostName,StringComparision.OrdinalIgnoreCase) 要么 hostname.Equals(theHostName,StringComparision.InvariantCultureIgnoreCase) ?

In' IsAllowedHostName'我应该做什么

hostname.IndexOf(badSubstring,StringComparison.OrdinalIgnoreCase)> = 0 要么 hostname.IndexOf(badSubstring,StringComparison.InvariantCultureIgnoreCase)> = 0 ?

或者对于主机名,这些都不是正确答案吗?

2 个答案:

答案 0 :(得分:2)

您应该阅读定义DNS系统的RFC。 DNS主机标签不区分大小写,可能只包含字母A-Z,0-9和' - '。 DNS名称由一个或多个与ASCII连接的标签组成。' (期间,句号)。

使用StringComparision.OrdinalIgnoreCase

答案 1 :(得分:0)

在您的情况下,您可以确定使用 OrdinalIgnoreCase InvariantCultureIgnoreCase 之间没有功能差异。

但从语义上讲,您对进行任何基于自然语言的比较不感兴趣,因此 OrdinalIgnoreCase 会更合乎逻辑。作为副作用,它也比InvariantCultureIgnoreCase更快。