2013-10-10 5 views
0

Я могу искать/выделять определенное слово в текстовом документе с помощью моего кода. Но ниже проблема, с которой я столкнулся.Выделите текст в документе слова в C#

Если искомое слово «оно», то оно ищет «это», а также в w «это». Я хочу искать только слово «это». Как решить эту проблему?

private int FindLoop(Word._Application wordApp, object text, 
          Word._Document aDoc, 
          object aComment, out List<string> OccuranceList, 
          bool insertComment) 
    { 

     int intFound = 0; 
     //object start = 0; 
     //object end = 1; 
     object missing = System.Reflection.Missing.Value; 

     object myfile = saveFileDialog.FileName; 

     Word.Range rng = wordApp.ActiveDocument.Range(ref missing, ref missing); 




     object readOnly = true; 
     //object isVisible = true; 
     object isVisible = false; 
     object oMissing = System.Reflection.Missing.Value; 
     string fname = textBox1.Text; 


     object matchWholeWord = true; 

     OccuranceList = new List<string>(); 
     object[] Parameters; 
     Parameters = new object[15]; 
     Parameters[0] = text; 
     Parameters[1] = missing; 
     Parameters[2] = missing; 
     Parameters[3] = missing; 
     Parameters[4] = missing; 
     Parameters[5] = missing; 
     Parameters[6] = missing; 
     Parameters[7] = missing; 
     Parameters[8] = missing; 
     Parameters[9] = text; 
     Parameters[10] = missing; 
     Parameters[11] = missing; 
     Parameters[12] = missing; 
     Parameters[13] = missing; 
     Parameters[14] = missing; 
     bool found = false; 



     { 
      try 
      { 

       found = (bool)rng.Find.GetType().InvokeMember("Execute", BindingFlags.InvokeMethod, null, rng.Find, Parameters); 





      } 

      catch (Exception ex) 
      { 
       MessageBox.Show("Find Loop", ex.Message); 
      } 





      //while (rng.Find.Found) 
      while (found) 
      { 



       intFound++; 
       if (checkBox1.Checked == true) 
       { 
        if (fname.ToString().EndsWith("doc") || fname.ToString().EndsWith("docx")) 
        { 
         try 
         { 
          if (rng.Text.Trim() == text.ToString()) 
          { 



           // Add a new document 
           aDoc = wordApp.Documents.Open(fname, ref oMissing, 
                   ref readOnly, ref oMissing, ref oMissing, ref oMissing, 
                   ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
                   ref oMissing, ref isVisible, ref oMissing, ref oMissing, 
                   ref oMissing, ref oMissing); 



           rng.Font.Bold = 1; 
           rng.HighlightColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdDarkRed; 
          } 

         } 

         catch (Exception ex) 
         { 

          MessageBox.Show(ex.Message); 
         } 

        } 


       } 
    } 
    } 

ответ

1

Вам необходимо добавить подстановочные знаки к тексту, который вы ищете. В вашей ситуации текст для поиска будет: <it> вместо it. Обращаясь к коду должно быть что-то вроде этого:

Parameters[0] = String.Format("<{0}>"; text); 

Кроме того, вам нужно будет установить подстановочные параметры верно:

Parameters[3] = true; 

Для получения дополнительной информации посетите this link.

+0

Am сталкиваются с проблемами с корпусами. Мне нужно его искать, не учитывая чувствительность к регистру. – Robin

+0

попытайтесь установить значение true: 'Параметры [1] = true;' –

+0

нет, это работает dont .. другой подход? – Robin

Смежные вопросы