NCode.StringSegments
                             
                            
                                3.0.0
                            
                        
                            
                                
                                
                                    Prefix Reserved
                                
                            
                    dotnet add package NCode.StringSegments --version 3.0.0
NuGet\Install-Package NCode.StringSegments -Version 3.0.0
        
        
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="3.0.0" />
        
        
For projects that support PackageReference, copy this XML node into the project file to reference the package.
                    
    
    <PackageVersion Include="NCode.StringSegments" Version="3.0.0" />
<PackageReference Include="NCode.StringSegments" />
        
        
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
                    
    
    paket add NCode.StringSegments --version 3.0.0
        
        
 The NuGet Team does not provide support for this client. Please contact its maintainers for support.
                    
    
    #r "nuget: NCode.StringSegments, 3.0.0"
        
        
#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.
                    
    
    #:package NCode.StringSegments@3.0.0
        
        
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
                    
    
    #addin nuget:?package=NCode.StringSegments&version=3.0.0
#tool nuget:?package=NCode.StringSegments&version=3.0.0
        
        
 The NuGet Team does not provide support for this client. Please contact its maintainers for support.
                    
    
    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 readonly struct StringSegments : IReadOnlyCollection<ReadOnlySequenceSegment<char>>
{
    /// <summary>
    /// Gets a value indicating whether the current instance is empty.
    /// </summary>
    public bool IsEmpty { get; }
    /// <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>
    /// <exception cref="InvalidOperationException">Thrown when the current instance is empty.</exception>
    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
- v3.0.0 - Change StringSegments to be a struct and net8 upgrade
| Product | Versions Compatible and additional computed target framework versions. | 
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. | 
        
        Compatible target framework(s)
    
    
        
        Included target framework(s) (in package)
    
    Learn more about Target Frameworks and .NET Standard.
- 
                                                    net8.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.
Built on 2024-06-13 04:07:17Z