.NET Core中,除了VB的LikeString,还有哪些类似实现?
摘要:Like运算符很好用,特别是它所提供的其中*、?这两种通配符,在Windows文件系统和各类项目中运用非常广泛。
但Like运算符仅在VB中支持,在C#中,如何实现呢?
以下是关于LikeString的四种实
Like运算符很好用,特别是它所提供的其中*、?这两种通配符,在Windows文件系统和各类项目中运用非常广泛。
但Like运算符仅在VB中支持,在C#中,如何实现呢?
以下是关于LikeString的四种实现方式,其中第四种为Regex正则表达式实现,且在.NET Standard 2.0及以上平台支持。
Operators.LikeString 方法
方法描述:表示 Visual Basic 的 Like 运算符,对给定的两个字符串执行二进制字符串或文本字符串比较。
平台兼容性:该方法由Microsoft.VisualBasic.dll库提供,仅在.NET Framework平台下支持。
参考链接:https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.compilerservices.operators.likestring
源码链接:无
LikeOperator.LikeString 方法
方法描述:对给定的两个字符串执行二进制字符串或文本字符串比较。
平台兼容性:该方法由Microsoft.VisualBasic.Core.dll提供,在.NET Framework和.NET Core 3.0+以上平台都支持。
参考链接:https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.compilerservices.likeoperator.likestring
源码链接:https://github.com/dotnet/runtime/blob/main/src/libraries/Microsoft.VisualBasic.Core/src/Microsoft/VisualBasic/CompilerServices/LikeOperator.vb
FileSystemName.MatchesSimpleExpression 方法
方法描述:验证给定表达式是否与给定名称匹配。支持以下通配符:“*”and“?”。反斜杠字符“\”将转义。
平台兼容性:该方法由System.Private.CoreLib.dll提供,在.NET Standard 2.1和.NET Core 2.1+以上平台都支持。
参考链接:https://learn.microsoft.com/en-us/dotnet/api/system.io.enumeration.filesystemname.matchessimpleexpression
源码链接:https://github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemName.cs
RegexLikeOperator.LikeString 方法
方法描述:使用正则表达式,模仿LikeOperator.LikeString方法,实现字符串的通配符匹配,持*和?通配符,支持忽略大小写匹配。
平台兼容性:该方法由GitHub Copilot实现,在.NET Standard 1.0和.NET Framework 1.1+以上以及.NET Core 1.0+以上平台都支持。
源码实现:
/// <summary>
/// 使用正则表达式,模仿Microsoft.VisualBasic.CompilerServices.LikeOperator.LikeString方法,实现字符串的通配符匹配
/// </summary>
public static class RegexLikeOperator
{
/// <summary>
/// 使用正则表达式,模仿Microsoft.VisualBasic.CompilerServices.LikeOperator.LikeString方法,实现字符串的通配符匹配。<br/>
/// 支持*和?通配符,支持忽略大小写匹配。
