正则表达式,用于检查字符串是否包含所有特定符号

时间:2014-03-19 13:40:58

标签: c# regex string

问题是可能的字符串是: ABCDEFGHIJKLMNOPQRSTUVWXYZ (排序)

我还有另外一个字符串可以找到像:adef

检查所有指定字符是否都在字符串中的正则表达式是什么?

测试用例: string:amnosxy 找到字符:osy 结果:是的

字符串:amnosxy 找到字符:anz 结果:false(找不到z。)

它看起来像containsAll方法

要检查的正则表达式是什么? (有可能使它在dinamically取决于查找字符串)。

我不喜欢每个字符的循环解决方案并检查IndexOf ..

2 个答案:

答案 0 :(得分:7)

无需使用正则表达式:

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

另一种有效的方法是使用HashSet<char>及其IsSubsetOf方法:

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

答案 1 :(得分:4)

如果保证两个数组都已排序,我就不会使用正则表达式。只需循环input[x]直到找到toFind[y]或直到toFind[y]大于输入[x] - &gt;这意味着没有这样的元素。

修改:替代RegEx:.*o.*s.*y.*,所以只需将.*放在所有这些字符之间。