Open.Text 4.0.1

There is a newer version of this package available.
See the version list below for details.
Install-Package Open.Text -Version 4.0.1
dotnet add package Open.Text --version 4.0.1
<PackageReference Include="Open.Text" Version="4.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Open.Text --version 4.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Open.Text, 4.0.1"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Open.Text as a Cake Addin
#addin nuget:?package=Open.Text&version=4.0.1

// Install Open.Text as a Cake Tool
#tool nuget:?package=Open.Text&version=4.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.


A set of useful extensions for working with strings, string-segments, spans, enums, and value formatting.



  • Avoids allocation wherever possible.
  • v3.x is a major overhaul with much improved methods and expanded tests and coverage.
  • v4.x favored use of Microsoft.Extensions.Primitives.StringSegments for string manipulation.

String vs Span Equality

Optimized .Equals(...) extension methods for comparing spans and strings.

String & Span Splitting


Returns each string segment of the split through an enumerable instead of all at once in an array.


Produces an enumerable where each segment is yielded as a ReadOnlyMemory<char>.


Produces an enumerable where each segment is yielded as a StringSegment.


TrimStartPattern & TrimEndPattern

Similar to their character trimming counterparts, these methods can trim sequences of characters or regular expression patterns.

StringBuilder Extensions

Extensions for:

  • adding segments with separators.
  • adding spans without creating a string first.
  • converting enumerables to a StringBuilder.

StringSegment Extensions

Extensions for:

  • .Trim(char) and .Trim(ReadOnlySpan<char>).
  • finding and pivoting from sequences without allocation.

StringComparable & SpanComparable Extensions

if(myString.AsCaseInsensitive()=="HELLO!") { }

instead of

if(myString.Equals("HELLO!", StringComparison.OrdinalIgnoreCase)) { }

EnumValue<TEnum> & EnumValueIgnoreCase<TEnum>

Implicit conversion makes it easy. Optimized methods make it fast.

Consider the following:

enum Greek { Alpha, Beta, Gamma }

void DoSomethingWithGreek(Greek value) { }


It's nice that Greek is an enum because it won't be null, and it has to be one of the values. But what if you want to write a single function that will take an Greek or a string? This gets problematic as the string value has to be parsed and you'll likely need an overload.

EnumValue<TEnum> solves this problem:

enum Greek { Alpha, Beta, Gamma }

void DoSomethingWithGreek(EnumValue<Greek> value) { }

// Both work fine.

// Throws an ArgumentException:

The implicit conversion between a string and EnumValue<TEnum> make this possible.

If you need to allow for case-insensitive comparison then simply use EnumValueCaseIgnored<TEnum> instead.

The performance is outstanding as it uses the length of the names to build a tree in order to parse values and uses an expression tree instead of calling .ToString() on the value.

... And more

Various formatting and Regex extensions including Capture.AsSpan() for getting a ReadOnlySpan<char> instead of allocating a string.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Open.Text:

Package Downloads

Simple set of DateTime extensions extensions. Code savers like: .Delta(time?)

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
4.2.2 127 10/28/2021
4.2.1 71 10/28/2021
4.2.0 71 10/28/2021
4.1.1 96 10/25/2021
4.1.0 89 10/19/2021
4.0.1 77 10/18/2021
3.6.3 195 10/17/2021
3.5.0 78 10/15/2021
3.4.3 126 10/11/2021
3.4.2 163 9/20/2021
2.1.0 503 7/3/2019
2.0.5 404 6/30/2019
2.0.4 468 3/31/2019
1.1.0 6,830 1/4/2018