Nhunspell C # Добавление слова в словарь - PullRequest
4 голосов
/ 22 февраля 2012

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

// 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");                
}

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

Спасибо

Ответы [ 2 ]

9 голосов
/ 27 февраля 2012

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

1 голос
/ 05 декабря 2012

Добавление слова в словарь - это просто добавление нового слова в любой текстовый файл, используя 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);
        }
    }
...