Skip to content

8.1.0

Choose a tag to compare

@FolkerKinzel FolkerKinzel released this 02 Jun 15:41
· 115 commits to master since this release
  • Performance: All StringBuilder extension methods are fast now.
  • Performance: The String.ReplaceLineEndings polyfill and the String.ReplaceWhiteSpaceWith extension methods are faster and more memory efficient.
  • Performance: The StaticStringMethod.Concat polyfills are faster when concatenating empty spans.
  • Performance: Base64.GetBytes is more memory efficient.
  • New method:
static string StaticStringMethod.Concat(ReadOnlySpan<ReadOnlyMemory<char>>);
  • The new PersistentStringHash struct allows to combine the hash code for multiple character based values into a single persistent hash code.
  • Polyfills for the static System.Buffers.SearchValues class and the System.Buffers.SearchValues class (.NET 7.0, .NET 6.0, .NET 5.0, .NET Core 3.1, .NET Standard 2.1, .NET Standard 2.0, .NET Framework 4.6.1):
static class FolkerKinzel.Strings.SearchValues;
class FolkerKinzel.Strings.SearchValues<T>;

 

  • New extension methods:
int LastIndexOfAny(this ReadOnlySpan<char>, SearchValues<char>, int, int);
int LastIndexOfAny(this Span<char>, SearchValues<char>, int, int);
ReadOnlySpan<char> Trim(this ReadOnlySpan<char>, SearchValues<char>);
ReadOnlySpan<char> TrimStart(this ReadOnlySpan<char>, SearchValues<char>);
ReadOnlySpan<char> TrimEnd(this ReadOnlySpan<char>, SearchValues<char>);
Span<char> Trim(this Span<char>, SearchValues<char>);
Span<char> TrimStart(this Span<char>, SearchValues<char>);
Span<char> TrimEnd(this Span<char>, SearchValues<char>);

 

  • New polyfills for the ReadOnlySpan<Char> struct (.NET 7.0, .NET 6.0, .NET 5.0, .NET Core 3.1, .NET Standard 2.1, .NET Standard 2.0, .NET Framework 4.6.1):
int IndexOfAny(this ReadOnlySpan<char>, SearchValues<char>);
bool ContainsAny(this ReadOnlySpan<char>, SearchValues<char>);
int LastIndexOfAny(this ReadOnlySpan<char>, SearchValues<char>);
int IndexOfAnyExcept(this ReadOnlySpan<char>, SearchValues<char>);
int LastIndexOfAnyExcept(this ReadOnlySpan<char>, SearchValues<char>);
bool ContainsAnyExcept(this ReadOnlySpan<char>, SearchValues<char>);
bool ContainsAnyExcept(this ReadOnlySpan<char>, ReadOnlySpan<char>);
bool ContainsAnyExcept(this ReadOnlySpan<char>, char);
bool ContainsAnyExcept(this ReadOnlySpan<char>, char, char);
bool ContainsAnyExcept(this ReadOnlySpan<char>, char, char, char);

 

  • New polyfills for the ReadOnlySpan<Char> struct (.NET Standard 2.0, .NET Framework 4.6.1):
bool ContainsAnyExcept(this ReadOnlySpan<char>, string?);

 

  • New polyfills for the Span<Char> struct (.NET 7.0, .NET 6.0, .NET 5.0, .NET Core 3.1, .NET Standard 2.1, .NET Standard 2.0, .NET Framework 4.6.1):
int IndexOfAny(this Span<char>, SearchValues<char>);
bool ContainsAny(this Span<char>, SearchValues<char>);
int LastIndexOfAny(this Span<char>, SearchValues<char>);
int IndexOfAnyExcept(this Span<char>, SearchValues<char>);
int LastIndexOfAnyExcept(this Span<char>, SearchValues<char>);
bool ContainsAnyExcept(this Span<char>, SearchValues<char>);
bool ContainsAnyExcept(this Span<char>, ReadOnlySpan<char>);
bool ContainsAnyExcept(this Span<char>, char);
bool ContainsAnyExcept(this Span<char>, char, char);
bool ContainsAnyExcept(this Span<char>, char, char, char);

 

  • New polyfills for the Span<Char> struct (.NET Standard 2.1, .NET Standard 2.0, .NET Framework 4.6.1):
Span<char> Trim(this Span<char>, ReadOnlySpan<char>);
Span<char> TrimStart(this Span<char>, ReadOnlySpan<char>);
Span<char> TrimEnd(this Span<char>, ReadOnlySpan<char>);

 

  • New polyfills for the Span<Char> struct (.NET Standard 2.0, .NET Framework 4.6.1):
bool ContainsAnyExcept(this Span<char>, string?);
Span<char> Trim(this Span<char>, string?);
Span<char> TrimStart(this Span<char>, string?);
Span<char> TrimEnd(this Span<char>, string?);

 

Project reference: On some systems, the content of the CHM file in the Assets is blocked. Before opening the file right click on the file icon, select Properties, and check the "Allow" checkbox - if it is present - in the lower right corner of the General tab in the Properties dialog.