C#匹配CSV字符串

时间:2014-09-24 13:23:29

标签: c# regex string csv match

我试图找出如何编写一个C#函数,如果有一个"匹配"两个字符串之间。字符串中的数字将始终按asc顺序排序。

string1: 1,3
string2: 1,2,3

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

string1: 1,2,4
string2: 1,2,3

在上面的示例中,return false应该为false,因为并非string2中的所有数字都在string2中找到。

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

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

我可以处理写这个功能,所以真的只是寻找关于"最佳"实现这一目标的方法。并且通过" best"我的意思是您认为性能最快的选项(是的,我会在进入生产之前在我的硬件上测试性能)。

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

1 个答案:

答案 0 :(得分:6)

如果格式严格且您不能使用1, "1,2,3", 2,则可以使用String.Split和LINQ:

bool allInOneInTwo = !string1.Split(',').Except(string2.Split(',')).Any();

Enumerable.Except返回两个序列的集合差异,非常有效。因为它在第一场比赛中会延迟Enumerable.Any执行。

因为您已经提到它必须高效,因为它每天执行多达100k次,并且您希望它最多只需要几秒钟的时间:上面的示例需要它只有140 毫秒在我的电脑上执行100k次。但两个阵列都非常小。 Except如果它们更大,会产生更大的影响。