Compare commits

...
2 Commits
Author SHA1 Message Date
plarsen 48a8448aa0 B2026-053-Global-Search-should-not-return-partial-matches 2026-07-27 10:51:56 -04:00
plarsen 99fe567e78 Development 2026-07-27 09:13:34 -04:00
+13 -21
View File
@@ -2078,7 +2078,7 @@ namespace Volian.Controls.Library
if (cbxFndUnLnkROVals.Enabled && cbxFndUnLnkROVals.Checked) if (cbxFndUnLnkROVals.Enabled && cbxFndUnLnkROVals.Checked)
{ {
string ROSearchList2 = checkPercentChar(ROSearchList); // match exact string string ROSearchList2 = exactsearch(ROSearchList); // match exact string
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results. // B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
SearchResults = ItemInfoList.GetListFromTextSearch(DVISearchList, TypeSearchList, ROSearchList2, cbxBooleanTxtSrch.Checked ? 2 : cbxCaseSensitive.Checked ? 1 : 0, cbxProcSectSrch.Checked ? 1 : 0, ItemSearchIncludeLinks.Nothing, includeRTFformat, includeSpecialChars, unitPrefix, string.Empty, string.Empty); SearchResults = ItemInfoList.GetListFromTextSearch(DVISearchList, TypeSearchList, ROSearchList2, cbxBooleanTxtSrch.Checked ? 2 : cbxCaseSensitive.Checked ? 1 : 0, cbxProcSectSrch.Checked ? 1 : 0, ItemSearchIncludeLinks.Nothing, includeRTFformat, includeSpecialChars, unitPrefix, string.Empty, string.Empty);
cmbResultsStyleIndex = 3; // display step text in results cmbResultsStyleIndex = 3; // display step text in results
@@ -2191,32 +2191,24 @@ namespace Volian.Controls.Library
OnSearchComplete(new DisplaySearchEventArgs(TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks))); OnSearchComplete(new DisplaySearchEventArgs(TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks)));
} }
private string checkPercentChar(string SearchString) private string exactsearch(string SearchString) // B2026-053
{ {
string ss = ""; //string ss = "";
string pattern = "%"; // Pattern to match the percentage sign StringBuilder ss = new StringBuilder();
Match match = Regex.Match(SearchString, pattern); int sl = SearchString.Length;
if (match.Success) // Special case for percents. int LstIdxSp = SearchString.LastIndexOf(' ');
if (sl == LstIdxSp + 1) // B2026-053 if ' ' the last char.
{ {
int sl = SearchString.Length; ss.Append(' ');
int precentIdx = SearchString.IndexOf('%'); ss.Append(SearchString); // B2026-053 add a space prefix to make the search exact if the end of the searchString is a space.
int startIndex = 0;
if (sl == precentIdx + 1) // % the last char.
{
ss = SearchString.Substring(startIndex, sl - 1);
var isNumeric = int.TryParse(ss, out int n);
if (isNumeric == true) // other that a % are the rest of the characters numbers.
{
ss = ' ' + SearchString; //add a space prefix to make the search exact. If search is 5% this makes it excult 25% 55% etc.;
}
}
} }
else else
{ {
ss = ' ' + SearchString + ' '; // Exact match add spaces before and after search string. ss.Append(' ');
ss.Append(SearchString); // B2026-053 Exact match add spaces before and after searchString.
ss.Append(' ');
} }
return ss; return ss.ToString();
} }
private void ClearResults() // B2021-103 if no results when RNO only, clear results list. (moved from btnSearch_Click) private void ClearResults() // B2021-103 if no results when RNO only, clear results list. (moved from btnSearch_Click)