在C#中,Delphi的MatchesMask
函数的等价物是使用System.IO.Path
类的GetFileName
方法。GetFileName
方法可以从指定的路径中获取文件名,并且可以使用通配符进行匹配。
以下是一个示例代码:
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"C:\Users\user\Documents\file.txt";
string searchPattern = "*.txt";
if (Path.GetFileName(path).MatchesMask(searchPattern))
{
Console.WriteLine("The file matches the search pattern.");
}
else
{
Console.WriteLine("The file does not match the search pattern.");
}
}
}
public static class StringExtensions
{
public static bool MatchesMask(this string filePath, string searchPattern)
{
return Path.GetFileName(filePath).Like(searchPattern);
}
public static bool Like(this string str, string pattern)
{
// 实现通配符匹配的代码
}
}
在这个示例中,我们使用了Path.GetFileName
方法从路径中获取文件名,并使用MatchesMask
扩展方法来进行通配符匹配。MatchesMask
方法使用了Like
方法来实现通配符匹配。
需要注意的是,C#中没有内置的通配符匹配方法,因此需要自己实现Like
方法。以下是一个简单的实现:
public static bool Like(this string str, string pattern)
{
return new Regex(
pattern
.Replace(".", "\\.")
.Replace("*", ".*")
.Replace("?", ".")
).IsMatch(str);
}
这个实现使用了正则表达式来进行通配符匹配。其中,.
和*
分别被替换为\.
和.*
,?
被替换为.
。然后使用Regex.IsMatch
方法来进行匹配。
领取专属 10元无门槛券
手把手带您无忧上云