要验证的字符串

时间:2014-11-25 11:51:51

标签: c#

我是C#.net开发人员。 我想检查源字符串是否包含目标字符串中的所有字符。 例如:

Source String      : Test Check
Destination sting  : Check Test

然后想检查目标字符串中是否存在每个字符(T,e,s,t,c,h,e,c,k)? 源字符串可以包含数字/字母数字/特殊字符,以与目标字符串进行比较。

我们可以通过循环验证每个&来自目的地的每个角色并将其与目的地相匹配,但这需要时间。

有没有简单的方法来检查这个?

2 个答案:

答案 0 :(得分:3)

您可以使用linq All方法

string source = "Test Check";
string destination = "Check Test;

bool result = source.All(a => destination.Contains(a));

正如@GrantWinney所说,这个解决方案不会考虑字母出现次数

答案 1 :(得分:2)

您可以使用Except + Any

string sourceString ="Test Check";
string destString ="Check Test";
bool destStringContainsSource = !sourceString.Except(destString).Any();

HashSet.SetEquals

HashSet<char> set = new HashSet<char>(sourceString);
destStringContainsSource = set.SetEquals(destString);

这两种方法都不考虑字符数。

Except - 方法甚至不检查目标字符串是否包含更多字符。它只是检查第二个字符串是否是第一个字符串的子集SetEquals并不完全相同。

您可以使用HashSet.IsSubsetOf来获得相同的行为:

HashSet<char> set = new HashSet<char>(sourceString);
bool sourceIsSubsetOfDest = set.IsSubsetOf(destString);

我更喜欢HashSet方法,因为它们非常有效,而且最清楚。