12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // <author></author>
- // <date></date>
- // <description></description>
- namespace ERP.Framework.Utils
- {
- public class UrlUtil
- {
- public static bool Match(string pattern, string path)
- {
- pattern = pattern.Replace("/", "\\"); // 将斜杠替换为反斜杠
- path = path.Replace("/", "\\");
- if (pattern.Contains("**"))
- {
- // 处理双星号通配符
- string[] patternParts = pattern.Split("**", StringSplitOptions.RemoveEmptyEntries);
- if (patternParts.Length == 1)
- {
- // 单个双星号,匹配任何路径
- return true;
- }
- else
- {
- // 多个双星号,需要按顺序匹配路径部分
- int lastIndex = -1;
- foreach (string patternPart in patternParts)
- {
- int index = path.IndexOf(patternPart, lastIndex + 1, StringComparison.OrdinalIgnoreCase);
- if (index == -1)
- {
- return false;
- }
- lastIndex = index + patternPart.Length;
- }
- return true;
- }
- }
- else
- {
- // 处理其他通配符
- string[] patternParts = pattern.Split('*', StringSplitOptions.RemoveEmptyEntries);
- int currentIndex = 0;
- foreach (string patternPart in patternParts)
- {
- int index = path.IndexOf(patternPart, currentIndex, StringComparison.OrdinalIgnoreCase);
- if (index == -1)
- {
- return false;
- }
- currentIndex = index + patternPart.Length;
- }
- return true;
- }
- }
- }
- }
|