VShawn / VariableKeywordMatcher

VariableKeywordMatcher is library offering several string-keyword matchers, they allow you match keyword by Initials\Chinese PinYin\Japanese Romaji... You can get the keyword hit position that allow you to high light the matched words.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VariableKeywordMatcher is a C# lib for:

  • English initials matching
  • English discrete matching
  • Chinese PinYin matching
  • Japanese Romajin matching
  • highlight multiple keywords in search
  • pluggable for more spell matching for future. (e.g. Tongyong Pinyin, Korean Hangul ... )

Usage

Install

Install from nuget:

VariableKeywordMatcher

(optional)MatcherProvider: ChineseZhCnPinYin

(optional)MatcherProvider: ChineseZhCnPinYinInitials

(optional)MatcherProvider: JapaneseRomaji

QuickStart

  1. Get the names of available matchers
var availableProviderNames = VariableKeywordMatcher.Builder.GetAvailableProviderNames().ToList();
  1. Make a list of which providers you want to use.
var enabledProviderNames = new ist<string>();
enabledProviderNames.AddavailableProviderNames[0]);
enabledProviderNames.AddavailableProviderNames[1]);
  1. Create the matcher(case sensitive = false)
var matcher = VariableKeywordMatcher.Builder.Build(enabledProviderNames);
  1. Build cache for original strings
var matchCache = matcher.CreateStringCache("Hello World");
  1. Match with the keywords
var result = matcher.Match(matchCache, new List<string>() { "he", "wo" });
  1. print result
if (result.IsMatchAllKeywords == true)
{
    // print where should be high-light
    for (int i = 0; i < result.HitFlags.Count; i++)
    {
        if (result.HitFlags[i] == true)
        {
            // highlight
            Console.Write($"[{result.OriginalString[i]}]");
        }
        else
        {
            // normal
            Console.Write($"{result.OriginalString[i]}");
        }
        Console.WriteLine();
    }
}
else
{
    Console.WriteLine("Not matched");
    for (int i = 0; i < result.KeywordsMatchedFlags.Count; i++)
    {
        if (result.KeywordsMatchedFlags[i] == false)
        {
            Console.WriteLine($"{result.Keywords[i]} was not matched");
        }
    }
}

Demo project PRemoteM

Included Components

About

VariableKeywordMatcher is library offering several string-keyword matchers, they allow you match keyword by Initials\Chinese PinYin\Japanese Romaji... You can get the keyword hit position that allow you to high light the matched words.

License:MIT License


Languages

Language:C# 100.0%