2014-10-09 26 views
0

對於平等相待,我應該怎麼辦什麼.net StringComparison類型最適合主機名比較?

hostname.Equals(theHostName,StringComparision.OrdinalIgnoreCase) 或 hostname.Equals(theHostName,StringComparision.InvariantCultureIgnoreCase) ?

在 'IsAllowedHostName' 我應該做

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

或者對於主機名,這兩個都不是正確答案嗎?

回答

2

您應該閱讀定義DNS系統的RFC。 DNS主機標籤不區分大小寫,可能只包含字母A-Z,0-9和' - '。 DNS名稱由1個或多個以ASCII'連接的標籤組成。'' (期間,句號)。使用StringComparision.OrdinalIgnoreCase

0

你的情況,你可以肯定的是有使用OrdinalIgnoreCaseInvariantCultureIgnoreCase之間沒有功能上的差異。

但是語義上你不會對做任何基於自然語言的比較感興趣,所以OrdinalIgnoreCase會更合乎邏輯。作爲一個副作用,InvariantCultureIgnoreCase也更快。