Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中Microsoft.Office.Interop.Word的同义词信息[]#_C#_.net_Ms Word_Office Interop_Synonym - Fatal编程技术网

C# C中Microsoft.Office.Interop.Word的同义词信息[]#

C# C中Microsoft.Office.Interop.Word的同义词信息[]#,c#,.net,ms-word,office-interop,synonym,C#,.net,Ms Word,Office Interop,Synonym,在C#i中使用 通过使用此代码获取单词的同义词 var app = new word.Application(); var infosyn = app.SynonymInfo[Wtext[Op + 1].ToString(), word.WdLanguageID.wdArabic]; foreach (var item in infosyn.MeaningList as Array) { listBox1.Items.Add(item.ToStri

在C#i中使用

通过使用此代码获取单词的同义词

 var app = new word.Application();
 var infosyn = app.SynonymInfo[Wtext[Op + 1].ToString(), word.WdLanguageID.wdArabic];
 foreach (var item in infosyn.MeaningList as Array)
     {

               listBox1.Items.Add(item.ToString());

     }
形象

我的问题是我只得到了意义列表(图像中的红色框是什么),但我想要图像中的所有单词(红色框和蓝色箭头中的单词,整个列表)。 注意:我使用了Meaninglist、RelatedWordList,但它不起作用,并使循环中的循环对每个同义词进行检查。像这样

var apps = new words.Application();
var infosyns = apps.SynonymInfo[item.ToString(), words.WdLanguageID.wdArabic] ;
foreach (var iitem in infosyns.MeaningList as Array)
{

listBox1.Items.Add(iitem.ToString());

var appss = new wordss.Application();
var infosynss = appss.SynonymInfo[iitem.ToString(),wordss.WdLanguageID.wdArabic] ;
foreach (var iiitem in infosyns.MeaningList as Array)
{

listBox1.Items.Add(iiitem.ToString());

}

}

Image

我也遇到了类似的问题,但是通过在结果中循环预定义的次数,我得到了更多。这只是一个快速的代码,我相信效率可以提高,但是我相信它会让你走上正确的轨道。(这与你所做的有些相似

private static string[] getAllMeanings(Application wordApp, string word, int maxSize = 12,bool addOriginal = false)
    {
        List<string> stringArr = new List<string>();
        if (addOriginal)stringArr.Add(word);
        SynonymInfo theSynonyms = wordApp.SynonymInfo[word];
        foreach (var Meaning in theSynonyms.MeaningList as Array)
        {
            if (stringArr.Contains(Meaning) == false) stringArr.Add((string)Meaning);
        }
        for (int ii = 0; ii < stringArr.Count; ii++)
        {
            theSynonyms = wordApp.SynonymInfo[stringArr[ii]];
            foreach (string Meaning in theSynonyms.MeaningList as Array)
            {
                if (stringArr.Contains(Meaning)) continue;
                stringArr.Add(Meaning);
            }
            if (stringArr.Count >= maxSize) return stringArr.ToArray();
        }
        return stringArr.ToArray();
    }
private static string[]getAllMeansions(应用程序wordApp,字符串字,int-maxSize=12,bool-addOriginal=false)
{
List stringArr=新列表();
如果(添加原始)字符串,则添加(word);
同义词信息同义词=wordApp.同义词信息[word];
foreach(synonyms.MeaningList作为数组中的var含义)
{
如果(stringArr.Contains(means)=false)stringArr.Add((string)means);
}
对于(int ii=0;ii=maxSize)返回stringArr.ToArray();
}
返回stringArr.ToArray();
}
基本上,此函数获取所有相关单词,然后递归地添加相关单词并查找它们的相关单词。如果将maxSize设置为15,则结果与您的结果非常相似

  • 注意:maxSize用于停止函数,例如“have”一词至少有3600个“同义词”。最佳情况下,您的结果应保持相关
    • 是正确的。 您需要通过执行以下操作循环底层数据:

      foreach (var iiitem in infosyns.MeaningList as Array)
                  {
      
                      listBox1.Items.Add(iiitem.ToString());
      
                      foreach (var item in iiitem.MeaningList)
                      {
                          listBox1.Items.Add(item.ToString());
                      }
      
                  }
      
      foreach (var iiitem in infosyns.MeaningList as Array)
                  {
      
                      listBox1.Items.Add(iiitem.ToString());
      
                      foreach (var item in iiitem.MeaningList)
                      {
                          listBox1.Items.Add(item.ToString());
                      }
      
                  }