要验证的字符串
本文关键字:字符串 验证 | 更新日期: 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
方法,因为它们非常有效,最重要的是清晰。