HighLightKeyword.razor 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. @inherits FnzComponentBase
  2. @code {
  3. [Parameter, Required] public string Text { get; set; }
  4. [Parameter, Required] public IReadOnlyCollection<string> Keywords { get; set; }
  5. }
  6. @if (string.IsNullOrEmpty(Text) == false)
  7. {
  8. var lowerText = Text.ToLower();
  9. for (var index = 0; index < Text.Length; ++index)
  10. {
  11. bool match = false;
  12. foreach (var kw in Keywords.Where(p => string.IsNullOrEmpty(p) == false).OrderByDescending(p => p.Length))
  13. {
  14. match = true;
  15. var lowerKw = kw.ToLower();
  16. for (var ki = 0; ki < kw.Length; ++ki)
  17. {
  18. if (index + ki >= Text.Length || lowerText[index + ki] != lowerKw[ki])
  19. {
  20. match = false;
  21. break;
  22. }
  23. }
  24. if (match)
  25. {
  26. <span class="text-danger">@Text.Substring(index,kw.Length)</span>
  27. index += kw.Length - 1;
  28. break;
  29. }
  30. }
  31. if (index < Text.Length && match == false)
  32. {
  33. <span>@Text[index]</span>
  34. }
  35. }
  36. }