TGViewer
StepOne | Степан Минин StepOne | Степан Минин @steponeit · 3.27K subscribers
Post #490 3.64K
О чём я не успел поговорить во времена хайпа .NET 8, так это SearchValues

Тогда вместе со Span добавили новую структуру данных для ускорения поиска вхождения символов в строку:
var vowelSearch = SearchValues.Create(new[] { 'a', 'e', 'i', 'o', 'u' });
var containsVowel = "text".AsSpan().ContainsAny(vowelSearch);


И она реально работает быстро, я даже применил её в своём проекте более хитрым способом через IndexOfAny:
https://github.com/Stepami/hydrascript/issues/58

Что интересно, в .NET 9 возможности расширили, добавив формирование поисковой структуры из строк, в добавку к символам:
var nameSearch = SearchValues.Create(new[] { "Alice", "Bob", "Charlie", "Diana" }, StringComparison.OrdinalIgnoreCase);
var text = ...
var contains = text.ContainsAny(names);


Советую не забывать про SearchValues, если вам нужно фильтровать и анализировать вхождение данных
GitHub [feature request] Заменить алгоритм поиска переносов строк на более эффективный с SearchValues · Issue #58 · Stepami/hydrascript Is your feature request related to a problem? Please describe. На текущий момент для построения системы координат (строка, столбец) весь исходный код перебирается регулярным выражением, что крайне ...
  • 👍 20
  • 🔥 6
  • ❤ 2
More from @steponeit
  1. Sep 25, 2026Рассказал как я добавил в HydraScript объекты и методы без классов и сделал протоколы. Стр…
  2. Sep 22, 2026Post #858
  3. Sep 21, 2026Post #857
  4. Sep 15, 2026Напомню, что у меня есть WireMock.Grpc.Protobuf — расширение для тех, кто пишет компонентн…
  5. Sep 12, 2026StepOne — официальный контрибутор FusionCache 🤙 Между набросами можно ещё и код писать Fu…
  6. Sep 11, 2026Стояк работодателей 2026 🤫 Оказывается, год назад я предсказал выход Астры! И вместе с эт…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →