2012-02-22 3 views
4

Мне удалось включить проверку орфографии в мой проект C# с использованием NHunspell. То, что я хотел бы сделать, это на самом деле добавить слово в файл словаря. Существует способ сделать это внутри NHunspell, который я считаю, это следующим образом:Nhunspell C# Добавление слова в словарь

// Add the word to the dictionary and carry on 
using (Hunspell hunspell = new Hunspell(@"Dictionaries/en_GB.aff", @"Dictionaries/en_GB.dic")) 
{ 
    hunspell.Add("wordToAdd");     
} 

Когда я использую это, однако, не кажется, на самом деле ничего делать. Кто-нибудь сможет сказать, что я делаю неправильно?

Благодаря

ответ

9

Я не понимал, что добавление слова, используя метод .Add() позволяет только это слово будет использоваться в то время как объект Hunspell жив. Слово не добавляется во внешний файл словаря. Способ борьбы с этой проблемой состоял в том, чтобы использовать пользовательский файл словаря. Когда слово добавляется пользователем, это слово сохраняется в новом файле пользовательского словаря. Теперь, когда вызывается моя основная функция проверки орфографии, до того, как будут проверены все слова, все слова, которые находятся в пользовательском словаре, добавляются с помощью метода .Add(). Надеюсь это поможет.

+0

Я добавил пример кода, как загрузить пользовательский словарь к образцам NHunspell: http://www.crawler-lib.net/csharp-code-samples-nhunspell –

+0

Это действительно смешно, и кажется, что pyhunspell (интерфейс Python для hunspell) работает одинаково. add() ничего не добавляет к файлам словаря. –

1

Добавление слова в словарь просто добавляет новое слово в любой текстовый файл, используя WriteLine() из StreamWriter.

private void button1_Click(object sender, EventArgs e) 
{ 
    FileWriter(txtDic.Text, txtWord.Text, true); 
    txtWord.Clear(); 
    MessageBox.Show("Success..."); 
} 

public static void FileWriter(string filePath, string text, bool fileExists) 
    { 
     if (!fileExists) 
     { 
      FileStream aFile = new FileStream(filePath, FileMode.Create, FileAccess.Write); 
      StreamWriter sw = new StreamWriter(aFile); 
      sw.WriteLine(text); 
      sw.Close(); 
      aFile.Close(); 
     } 
     else 
     { 
      FileStream aFile = new FileStream(filePath, FileMode.Append, FileAccess.Write); 
      StreamWriter sw = new StreamWriter(aFile); 
      sw.WriteLine(text+"/3"); 
      sw.Close(); 
      aFile.Close(); 
      //System.IO.File.WriteAllText(filePath, text); 
     } 
    } 

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

  • Нет связанных вопросов^_^