NCode.StringSegments 2.0.2

The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved
dotnet add package NCode.StringSegments --version 2.0.2
NuGet\Install-Package NCode.StringSegments -Version 2.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NCode.StringSegments" Version="2.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NCode.StringSegments --version 2.0.2
#r "nuget: NCode.StringSegments, 2.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install NCode.StringSegments as a Cake Addin
#addin nuget:?package=NCode.StringSegments&version=2.0.2

// Install NCode.StringSegments as a Cake Tool
#tool nuget:?package=NCode.StringSegments&version=2.0.2

ci

NCode.StringSegments

Provides the ability to split a string into substrings based on a delimiter without any additional heap allocations.

API

namespace NCode.Buffers;

/// <summary>
/// Provides extensions methods to split a string into substrings based on a
/// delimiter without any additional heap allocations.
/// </summary>
public static class StringExtensions
{
    /// <summary>
    /// Splits a string into substrings based on a delimiter without any
    /// additional heap allocations.
    /// </summary>
    /// <param name="value">The string to split into substrings.</param>
    /// <param name="separator">A character that delimits the substrings in the
    /// original string.</param>
    /// <returns>A <see cref="StringSegments"/> instance that contains the
    /// substrings from the string that are delimited by the separator.</returns>
    public static StringSegments SplitSegments(
        this string value,
        char separator);

    /// <summary>
    /// Splits a string into substrings based on a delimiter without any
    /// additional heap allocations.
    /// </summary>
    /// <param name="value">The string to split into substrings.</param>
    /// <param name="separator">The string that delimits the substrings in the
    /// original string.</param>
    /// <returns>A <see cref="StringSegments"/> instance that contains the
    /// substrings from the string that are delimited by the separator.</returns>
    public static StringSegments SplitSegments(
        this string value,
        ReadOnlySpan<char> separator);

    /// <summary>
    /// Splits a string into substrings based on a delimiter without any
    /// additional heap allocations.
    /// </summary>
    /// <param name="value">The string to split into substrings.</param>
    /// <param name="separator">The string that delimits the substrings in the
    /// original string.</param>
    /// <param name="comparisonType">An enumeration that specifies the rules for
    /// the substring search.</param>
    /// <returns>A <see cref="StringSegments"/> instance that contains the
    /// substrings from the string that are delimited by the separator.</returns>
    public static StringSegments SplitSegments(
        this string value,
        ReadOnlySpan<char> separator,
        StringComparison comparisonType);

    /// <summary>
    /// Splits a string into substrings based on a delimiter without any
    /// additional heap allocations.
    /// </summary>
    /// <param name="value">The string to split into substrings.</param>
    /// <param name="separator">A character that delimits the substrings in the
    /// original string.</param>
    /// <returns>A <see cref="StringSegments"/> instance that contains the
    /// substrings from the string that are delimited by the separator.</returns>
    public static StringSegments SplitSegments(
        this ReadOnlyMemory<char> value,
        char separator);

    /// <summary>
    /// Splits a string into substrings based on a delimiter without any
    /// additional heap allocations.
    /// </summary>
    /// <param name="value">The string to split into substrings.</param>
    /// <param name="separator">The string that delimits the substrings in the
    /// original string.</param>
    /// <returns>A <see cref="StringSegments"/> instance that contains the
    /// substrings from the string that are delimited by the separator.</returns>
    public static StringSegments SplitSegments(
        this ReadOnlyMemory<char> value,
        ReadOnlySpan<char> separator);

    /// <summary>
    /// Splits a string into substrings based on a delimiter without any
    /// additional heap allocations.
    /// </summary>
    /// <param name="value">The string to split into substrings.</param>
    /// <param name="separator">The string that delimits the substrings in the
    /// original string.</param>
    /// <param name="comparisonType">An enumeration that specifies the rules for
    /// the substring search.</param>
    /// <returns>A <see cref="StringSegments"/> instance that contains the
    /// substrings from the string that are delimited by the separator.</returns>
    public static StringSegments SplitSegments(
        this ReadOnlyMemory<char> value,
        ReadOnlySpan<char> separator,
        StringComparison comparisonType);
}

/// <summary>
/// Provides the ability to split a string into substrings based on a delimiter
/// without any additional heap allocations.
/// </summary>
public class StringSegments : IReadOnlyCollection<ReadOnlySequenceSegment<char>>
{
    /// <summary>
    /// Gets the original string value.
    /// </summary>
    public ReadOnlyMemory<char> Original { get; }

    /// <summary>
    /// Gets the number of substrings.
    /// </summary>
    public int Count { get; }

    /// <summary>
    /// Gets the first substring.
    /// </summary>
    public ReadOnlySequenceSegment<char> First { get; }

    /// <summary>
    /// Returns an enumerator that iterates over the collection of substrings. 
    /// </summary> 
    public IEnumerator<ReadOnlySequenceSegment<char>> GetEnumerator();
}

Release Notes

  • v1.0.0 - Initial release
  • v1.0.1 - Added IReadOnlyList<> to StringSegments
  • v2.0.0 - Revert IReadOnlyList<> to IReadOnlyCollection<>
  • v2.0.1 - Updated readme
  • v2.0.2 - Exposing MemorySegment as public
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.2 160 7/29/2023
2.0.1 159 7/24/2023
2.0.0 129 7/24/2023
1.0.1 157 7/24/2023
1.0.0 142 7/24/2023

Built on 2023-07-29 02:32:33Z