Пожалуйста, попробуйте следующий код.
static void Main(string[] args)
{
string _wildCardPattern = "*.txt";
List<string> _fileNames = new List<string>();
_fileNames.Add("text_file.txt");
_fileNames.Add("csv_file.csv");
Console.WriteLine("\nFilenames that matches [{0}] pattern are : ", _wildCardPattern);
foreach (string _fileName in _fileNames)
{
CustomWildCardPattern _patetrn = new CustomWildCardPattern(_wildCardPattern);
if (_patetrn.IsMatch(_fileName))
{
Console.WriteLine("{0}", _fileName);
}
}
}
public class CustomWildCardPattern : Regex
{
public CustomWildCardPattern(string wildCardPattern)
: base(WildcardPatternToRegex(wildCardPattern))
{
}
public CustomWildCardPattern(string wildcardPattern, RegexOptions regexOptions)
: base(WildcardPatternToRegex(wildcardPattern), regexOptions)
{
}
private static string WildcardPatternToRegex(string wildcardPattern)
{
string patternWithWildcards = "^" + Regex.Escape(wildcardPattern).Replace("\\*", ".*");
patternWithWildcards = patternWithWildcards.Replace("\\?", ".") + "$";
return patternWithWildcards;
}
}
Я недавно придумал следующую архитектуру для решения этой проблемы, что я думал, будет стоить совместно использовать.
Псевдопервичный ключ
UUID Этот метод позволяет Вам усиливать преимущества UUID как псевдо-PK (использующий уникальный индекс), при поддержании автоувеличенного PK, чтобы обратиться к проблемам производительности наличия нечислового PK (фрагментация, вставить неисправность, и т.д.)
, Как это работает:
pkid
на Ваших Моделях DB. id
, чтобы позволить Вам искать идентификатором UUID, вместо числового первичного ключа. to_field='id'
), чтобы позволить Вашим внешним ключам правильно представлять псевдо-PK вместо числового идентификатора. По существу, Вы сделаете следующее:
Первый, создайте Базовую модель Django
class UUIDModel(models.Model):
pkid = models.BigAutoField(primary_key=True, editable=False)
id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
, Удостоверяются, что расширили базовую модель вместо моделей. Модель
class Site(UUIDModel):
name = models.CharField(max_length=255)
Также удостоверьтесь, что Ваши ForeignKeys указывают на поле UUID id
вместо автоувеличенного pkid
поле:
class Page(UUIDModel):
site = models.ForeignKey(Site, to_field='id', on_delete=models.CASCADE)
при использовании Django Rest Framework (DRF) удостоверьтесь, что также заложили Основу класс ViewSet для установки поля поиска по умолчанию:
class UUIDModelViewSet(viewsets.ModelViewSet):
lookup_field = 'id'
И расширяют это вместо основного ModelViewSet для Ваших представлений API:
class SiteViewSet(BaseModelViewSet):
model = Site
class PageViewSet(BaseModelViewSet):
model = Page
[еще 1125] примечания по, почему и, как в этой статье: https://www.stevenmoseley.com/blog/uuid-primary-keys-django-rest-framework-2-steps