NitroTextFieldParser 1.0.3

dotnet add package NitroTextFieldParser --version 1.0.3                
NuGet\Install-Package NitroTextFieldParser -Version 1.0.3                
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="NitroTextFieldParser" Version="1.0.3" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NitroTextFieldParser --version 1.0.3                
#r "nuget: NitroTextFieldParser, 1.0.3"                
#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 NitroTextFieldParser as a Cake Addin
#addin nuget:?package=NitroTextFieldParser&version=1.0.3

// Install NitroTextFieldParser as a Cake Tool
#tool nuget:?package=NitroTextFieldParser&version=1.0.3                

NitroTextFieldParser

Overview

The NitroTextFieldParser is a blazing-fast .NET library for parsing delimited or fixed-width text files. Built for high performance, it minimizes memory usage by leveraging ReadOnlyMemory<char> and supports advanced features such as quoted field handling. Whether you're processing CSVs or custom delimited files, NitroTextFieldParser provides robust and efficient parsing.


Benchmark Results

The NitroTextFieldParser outperforms the built-in TextFieldParser in terms of speed and memory usage. The following benchmark results demonstrate the performance benefits of using the NitroTextFieldParser when processing 1000Rows x 9Columns CSV data:

Method Mean Error StdDev Rank Gen0 Gen1 Gen2 Allocated
ProcessCsvAsMemoryLineNewTextFieldParser 1.708 ms 0.0327 ms 0.0425 ms 1 310.5469 130.8594 - 1.35 MB
ProcessSimpleCsvOldTextFieldParser 10.165 ms 0.1966 ms 0.2624 ms 2 3343.7500 515.6250 31.2500 12.46 MB

Release Notes

  • Improced Testing for maintainability.
  • Improved Quoted Text Field Parsing: Including support for escaped quotes

Features

  • High Performance: Minimal memory footprint with direct memory access.
  • Flexible Delimiters: Supports single or multiple custom delimiters.
  • Quoted Field Handling: Handles fields enclosed in quotes with support for escaped quotes.
  • Stream-Based: Reads data directly from any Stream, suitable for large files.
  • Encoding Support: Works with any character encoding.

Installation

Include the NitroTextFieldParser class in your .NET project or package it into a shared library.


Usage

1. Initialize the Parser

Create an instance of the parser with your data stream.

using NitroTextFieldParser;

using (var stream = File.OpenRead("data.csv"))
using (var parser = new TextFieldParser(stream))
{
    parser.SetDelimiters(","); // Set the delimiter for parsing
    parser.HasFieldsEnclosedInQuotes = true; // Enable quote handling
}

2. Set Delimiters

Define the delimiters used to separate fields:

parser.SetDelimiters(",", "\t"); // Supports multiple delimiters

3. Parse Data'

Read and parse fields line by line:

while (!parser.EndOfData)
{
    var fields = parser.ReadFields(); // Returns ReadOnlyMemory<char>[] for efficient access
    foreach (var field in fields)
    {
        Console.WriteLine(field.ToString()); // Convert to string for display
    }
}

4. Handle Quoted Fields

Enable quote handling for fields:

parser.HasFieldsEnclosedInQuotes = true; // Enable quote handling

Example Input:

"Name","Age","City"
"Alice, Bob","30","New York"

Output:

Row 1:

  • Name
  • Age
  • City

Row 2:

  • Alice, Bob
  • 30
  • New York

Custom Encoding

Specify a custom character encoding:

using (var parser = new TextFieldParser(stream, Encoding.UTF8))
{
    // Custom encoding setup
}

Stream Control

Keep the stream open after parsing:

var parser = new TextFieldParser(stream, Encoding.UTF8, true, true);

Read Full Content

Read the entire file content at once:

var content = parser.ReadToEnd();

Example Input and Output

Input File (data.csv):

"ID","Name","Email"
1,"John Doe","john@example.com"
2,"Jane Smith","jane@example.com"

Output:

Row 1:

  • ID
  • Name
  • Email

Row 2:

  • 1
  • John Doe
  • john@example.com

Row 3:

  • 2
  • Jane Smith
  • jane@example.com

Why Use NitroTextFieldParser?

  • Efficient memory usage for handling large files.
  • Flexible support for custom delimiters and quoted fields.
  • Easy to integrate into any .NET project.

License

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net9.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
1.0.3 60 1/3/2025
1.0.2 66 12/31/2024