2015-10-05 58 views
2

鑑於StringComparison實例,我應該如何檢查它是否區分大小寫?如何檢查StringComparison是否區分大小寫?

我應該將它與枚舉中所有當前已知的區分大小寫的值進行比較嗎?

StringComparison sc = ...; 
bool isCaseSensitive = false 
    || sc == StringComparison.CurrentCulture 
    || sc == StringComparison.InvariantCulture 
    || sc == StringComparison.Ordinal; 

回答

3

是的,對於枚舉形式(StringComparison)這很好。 MS現在不太可能再添加StringComparison值,因爲給enum添加一個值實際上是一個突破性改變。

對於StringComparer,這是相當困難:(

2

嗯,是的。StringComparison是6個值枚舉,並沒有方法來測試他們的情況敏感。

你要做的你自己,你的方法似乎是合理的

如果你想要一個(好的|討厭)的一行:

bool isCaseSensitive = (int)StringComparison.Ordinal % 2 == 1; 
+0

模仿hack的OMG令人討厭。 – usr

+0

@us的確如此。我不推薦使用它,因爲它完全隱藏了正在發生的事情,但我認爲一件襯衫很有趣。 –

+1

您可以計算比較值的加密哈希碼。還散列鹽值。如果比較值是敏感的,選擇鹽以使散列的最低位爲零。這應該發生在64個鹽值中的一個。然後該位將確定「isCaseSensitive」的值。現在,*這將是寫出這種情況的一種瘋狂方式。 – usr

1

你怎麼樣交流使用提供的枚舉來比較兩個字符串?

bool isCaseSensitive = !("A".Equals("a", sc)); 
+0

呃更多的黑客。多麼討厭。 – usr

+0

@us讓我們稱之爲「淘氣」,就像有些人喜歡那樣。我不會承認任何事情,但只有+1。 – mafu