比如下面的多个 Contains 操作,有没有更高效的实现方法?
if (body.Contains(".googlesyndication.com", StringComparison.OrdinalIgnoreCase) ||
body.Contains(".doubleclick.com", StringComparison.OrdinalIgnoreCase) ||
body.Contains(".doubleclick.net", StringComparison.OrdinalIgnoreCase))
{
body = Sanitize(body);
}
通过 dev.to 上的这篇文章 C# Search by multiple strings 知道了可以用 .NET 8 开始引入的 System.Buffers.SearchValues<T>
private static readonly SearchValues<string> _googleAdsenseDomains = SearchValues.Create(
[".googlesyndication.com", ".doubleclick.com", ".doubleclick.net"],
StringComparison.OrdinalIgnoreCase);
if (body.AsSpan().ContainsAny(_googleAdsenseDomains))
{
body = Sanitize(body);
}
从 SearchValues object become better with .NET 9 得知 .NET 8 中 SearchValues 只支持 char,.NET 9 才开始支持 string