C#匹配CSV字符串

tho*_*mas 0 c# regex csv string match

我试图弄清楚如何编写一个C#函数,如果两个字符串之间存在"匹配",则返回true.字符串中的数字将始终按asc顺序排序.

string1: 1,3
string2: 1,2,3
Run Code Online (Sandbox Code Playgroud)

如果在string2中找到string1中的所有数字,则该函数应返回true.在上面的示例中,返回值应为true.

string1: 1,2,4
string2: 1,2,3
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,return false应该为false,因为string1中找不到string1中的所有数字.

string1无论string2包含什么内容,作为空字符串的基本情况应始终返回true .

我正在考虑将两个字符串拆分成数组并尝试进行匹配,并且还会对正则表达式选项感兴趣.对您可能有的任何想法持开放态度.

我可以处理写这个功能,所以真的只是寻找"最好"的方法来实现这个目标.而"最佳"是指您认为性能最快的选项(是的,我会在进入生产之前在我的硬件上测试性能).

如果有帮助的话,字符串中最多只有10个数字.我们永远不会看到包含数百个数字的字符串.

Tim*_*ter 6

如果格式是严格的,你不能有像1, "1,2,3", 2你可以使用String.Split和LINQ:

bool allInOneInTwo = !string1.Split(',').Except(string2.Split(',')).Any();
Run Code Online (Sandbox Code Playgroud)

Enumerable.Except返回两个序列的集合差异,非常有效.因为它被懒惰地执行Enumerable.Any将在第一场比赛中返回.

既然你已经提到它必须是高效的,因为它每天执行多达100k次,并且你希望它最多花费不到几秒钟:使用上面的样本只需140 毫秒即可执行100k次我的电脑.但两个阵列都非常小.Except如果它们更大,会产生更大的差异.