/// <summary> /// Возврат всех слов из текста реактора поискового запроса, /// разделителями слов в тексте выступают пробельные символы. /// </summary> /// <returns></returns> string[] GetSearchStrArray() { string[] searchStrs; if (checkBoxFindRegExp.Checked) { searchStrs = checkRegExpFormat(); } else { ActiveSearchStringControl.Document.MarkerStrategy.RemoveAll((marker) => { return(true); }); ActiveSearchStringControl.Document.BookmarkManager.RemoveMarks((bookmark) => { return(true); }); ActiveSearchStringControl.Refresh(); string[] searchLineStrs = ActiveSearchStringControl.Text.Split( new string[] { ActiveSearchStringControl.TextEditorProperties.LineTerminator } , StringSplitOptions.RemoveEmptyEntries ); char[] delimeters = { ' ', '\t', '\n', '\r' }; List <string> searchWords = new List <string>(); foreach (string searchLine in searchLineStrs) { foreach (string searchWord in searchLine.Split(delimeters, StringSplitOptions.RemoveEmptyEntries)) { searchWords.Add(searchWord.Trim()); } } searchStrs = searchWords.ToArray(); } return(searchStrs); }
/// <summary> /// Проверка списка регулярных выражений на корректность и возврат списка строк корректных регулярных выражений. /// </summary> /// <returns></returns> string[] checkRegExpFormat() { string[] searchStrs = ActiveSearchStringControl.Text.Split( new string[] { ActiveSearchStringControl.TextEditorProperties.LineTerminator } , StringSplitOptions.RemoveEmptyEntries ); List <string> regExpResultList = new List <string>(); ActiveSearchStringControl.Document.MarkerStrategy.RemoveAll((marker) => { return(true); }); ActiveSearchStringControl.Document.BookmarkManager.RemoveMarks((bookmark) => { return(true); }); bool errorExist = false; for (int indexRegExpCandidate = 0; indexRegExpCandidate < ActiveSearchStringControl.Document.TotalNumberOfLines; indexRegExpCandidate++) { LineSegment segment = ActiveSearchStringControl.Document.GetLineSegment(indexRegExpCandidate); string regExpCandidateString = ActiveSearchStringControl.Document.GetText(segment); try { if (!String.IsNullOrEmpty(regExpCandidateString.Trim())) { Regex regEx = new Regex(regExpCandidateString, RegexOptions.Compiled); regExpResultList.Add(regExpCandidateString); } } catch (System.ArgumentException ex) { TextMarker marker = new TextMarker( segment.Offset , segment.Length , TextMarkerType.WaveLine , Color.Red , Color.DarkRed ); marker.ToolTip = ex.Message; ActiveSearchStringControl.Document.MarkerStrategy.AddMarker(marker); Bookmark mark = new Bookmark( ActiveSearchStringControl.Document , ActiveSearchStringControl.Document.OffsetToPosition(segment.Offset) , true); ActiveSearchStringControl.Document.BookmarkManager.AddMark(mark); errorExist = true; } } if (errorExist) { ActiveSearchStringControl.Refresh(); } return(regExpResultList.ToArray()); }