示例#1
0
 /// <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);
 }
示例#2
0
        /// <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());
        }