要验证的字符串

本文关键字:字符串 验证 | 更新日期: 2023-09-27 18:31:57

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

Source String      : Test Check
Destination sting  : Check Test

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

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

有什么简单的方法可以检查这一点吗?

要验证的字符串

您可以使用 linq All 方法来实现此目的

string source = "Test Check";
string destination = "Check Test;
bool result = source.All(a => destination.Contains(a));

正如@GrantWinney提到的,此解决方案不会考虑字母出现的数量

您可以使用

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方法,因为它们非常有效,最重要的是清晰。