Skip to content

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

Notifications You must be signed in to change notification settings

VShawn/VariableKeywordMatcher

Repository files navigation

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.

Resources

License

Stars

Watchers

Forks

Languages