在.NET Core,除了VB的LikeString,还有其它方法吗?(四种LikeString实现分享)
内容提要
Like运算符在VB中很常用,但在C#中不支持。文章介绍了四种实现方式,其中第四种是使用正则表达式实现的,支持.NET Standard 1.0及以上平台。
延伸解读
平台兼容性对比
四种实现方式的平台支持差异明显:Operators.LikeString仅限.NET Framework;LikeOperator.LikeString支持.NET Framework和.NET Core 3.0+;FileSystemName.MatchesSimpleExpression支持.NET Standard 2.1和.NET Core 2.1+;RegexLikeOperator.LikeString支持.NET Standard 1.0及以上。若需兼容旧版.NET Standard,RegexLik
性能与内存的权衡
根据Benchmark测试,RegexLikeOperator在内存分配上表现优秀,但执行性能较差。忽略大小写匹配时,其执行性能比不忽略大小写更好。因此,在内存敏感或分配频繁的场景可考虑使用,但对执行速度要求高的场景需谨慎。
实现细节与注意事项
RegexLikeOperator通过Regex.Escape转义模式字符串,再将\*替换为.*、\?替换为.,并添加首尾锚点,从而模拟Like运算符的通配符匹配。它支持*和?通配符,并可选择忽略大小写。但需注意,其行为可能与原生Like运算符存在细微差异,如对特殊字符的处理。
Q&A
C#中如何实现VB的Like运算符?
可以通过四种方法实现VB的Like运算符,包括Operators.LikeString、LikeOperator.LikeString、FileSystemName.MatchesSimpleExpression和RegexLikeOperator.LikeString。
RegexLikeOperator.LikeString方法的特点是什么?
RegexLikeOperator.LikeString使用正则表达式实现,支持*和?通配符,并可选择忽略大小写,兼容.NET Standard 1.0及以上平台。
在.NET Framework中支持的Like运算符实现有哪些?
在.NET Framework中支持的Like运算符实现有Operators.LikeString和LikeOperator.LikeString。
FileSystemName.MatchesSimpleExpression方法的兼容性如何?
FileSystemName.MatchesSimpleExpression方法支持.NET Standard 2.1和.NET Core 2.1及以上平台。
四种Like运算符实现的性能表现如何?
经过Benchmark性能测试,RegexLikeOperator在内存分配上表现优秀,但执行性能较差。
C#中使用正则表达式实现Like运算符的优缺点是什么?
优点是内存分配表现优秀,缺点是执行性能较差,尤其在不忽略大小写匹配时性能更差。