Flint 0.2.0
See the version list below for details.
dotnet add package Flint --version 0.2.0
NuGet\Install-Package Flint -Version 0.2.0
<PackageReference Include="Flint" Version="0.2.0" />
<PackageVersion Include="Flint" Version="0.2.0" />
<PackageReference Include="Flint" />
paket add Flint --version 0.2.0
#r "nuget: Flint, 0.2.0"
#:package Flint@0.2.0
#addin nuget:?package=Flint&version=0.2.0
#tool nuget:?package=Flint&version=0.2.0
Flint is a lightweight, zero-dependency C# library that provides fast text matching utilities using the Aho-Corasick algorithm.
Usage Examples
Basic
using Flint;
var matcher = new TextMatcher(new[] { "cat", "dog" });
var results = matcher.Find("The dog chased the cat.");
foreach (var match in results)
{
Console.WriteLine($"Found '{match.Value}' at index {match.StartIndex}.");
}
Output:
Found 'dog' at index 4.
Found 'cat' at index 19.
An optional StringComparison
can be passed to TextMarcher
, influencing it's behavior when performing searches/replacement.
If none is given, it will default to StringComparison.CurrentCulture
.
using Flint;
var matcher = new TextMatcher(new[] { "cat", "dog" }, StringComparison.OrdinalIgnoreCase);
var results = matcher.Find("The DOG chased the CaT.");
foreach (var match in results)
{
Console.WriteLine($"Found '{match.Value}' at index {match.StartIndex}.");
}
Output:
Found 'DOG' at index 4.
Found 'CaT' at index 19.
Scan multiple texts with FindAll
using Flint;
var patterns = new[] { "cat", "dog", "bird" };
var matcher = new TextMatcher(patterns);
var texts = new[]
{
"The dog chased the cat.",
"A bird watched them from above.",
"No animals here."
};
var all = matcher.FindAll(texts);
foreach (var kv in all)
{
Console.WriteLine(kv.Key);
foreach (var m in kv.Value)
{
Console.WriteLine($"Found '{m.Value}' at index {m.StartIndex}.");
}
}
Example output:
The dog chased the cat.
Found 'cat' at index 19.
Found 'dog' at index 4.
A bird watched them from above.
Found 'bird' at index 2.
No animals here.
Overlapping and nested matches
using Flint;
var matcher = new TextMatcher(new[] { "he", "she", "his", "hers" });
var results = matcher.Find("she is his hero");
foreach (var m in results)
{
Console.WriteLine($"Found '{m.Value}' at index {m.StartIndex}.");
}
Example output:
Found 'she' at index 0.
Found 'he' at index 1.
Found 'his' at index 7.
Found 'he' at index 10.
Replace all matches with a single value
using Flint;
var matcher = new TextMatcher(new[] { "cat", "dog" });
var replaced = matcher.Replace("The dog chased the cat.", "animal");
Console.WriteLine(replaced);
Output:
The animal chased the animal.
Replace matches using a function
using Flint;
var matcher = new TextMatcher(new[] { "cat", "dog" });
var replaced = matcher.Replace(
"The dog chased the cat.",
match => match.Value.ToUpper()
);
Console.WriteLine(replaced);
Output:
The DOG chased the CAT.
Replace each pattern with a different value
using Flint;
var matcher = new TextMatcher(new[] { "cat", "dog" });
var replaced = matcher.Replace(
"The dog chased the cat.",
new[] { "feline", "canine" }
);
Console.WriteLine(replaced);
Output:
The canine chased the feline.
Load patterns from a file
using Flint;
var patterns = File.ReadAllLines("patterns.txt")
.Where(l => !string.IsNullOrWhiteSpace(l));
var matcher = new TextMatcher(patterns);
var text = File.ReadAllText("large_input.txt");
var hits = matcher.Find(text).ToArray();
Console.WriteLine($"Found {hits.Length} matches.");
Support
- .NET Standard 2.0 and .NET 8.0
License
Flint is licensed under the MIT License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
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.
- Added optional StringComparison support for TextMatcher, with the default being StringComparison.CurrentCulture if not specified.