2014-03-19 80 views
2

的問題是可能的字符串是: ABCDEFGHIJKLMNOPQRSTUVWXYZ (排序)正則表達式,如果一個字符串包含所有特定符號

,我有另外一個字符串,它有字符找到像:ADEF

什麼是正則表達式來檢查是否所有指定的字符都是字符串?

測試用例: 字符串:amnosxy 找到字符:OSY 結果:真

字符串:amnosxy 找到字符:ANZ 結果:(未找到Z)假的。

它看起來像containsAll方法

什麼是檢查正則表達式? (可以通過查找字符串來使其在dinamically中)。

我不喜歡像循環每個字符的解決方案併爲您的IndexOf ..

+1

在同一個訂單中所有指定的字符或所有指定characers? – Remko

+0

排序無關緊要(字符串總是按字母順序排序) –

回答

7

沒有必要使用正則表達式:

bool containsAll = !"osy".Except("amnosxy").Any(); 

另一種有效的方法是使用HashSet<char>和它的IsSubsetOf方法:

HashSet<char> chars = new HashSet<char>("osy"); 
bool containsAll = chars.IsSubsetOf("amnosxy"); 
+0

+1漂亮。 (還有5個去) –

+0

它的輝煌,也沒有排序字符串的作品。 –

+1

@ПавелИванов:兩種方法都使用引擎蓋下的一套,不需要排序。 –

3

若能保證兩個數組排序我不會用正則表達式這一點。只需循環input[x]直到找到toFind[y]或直到toFind[y]大於input [x] - >這意味着不存在這樣的元素。

編輯:替代正則表達式:.*o.*s.*y.*,所以只需在所有這些字符之間放置.*

相關問題