为什么SpellChecker(C#)错误地定义了单词?

时间:2016-03-31 15:22:03

标签: c#

我需要从List中确定正确的拼写特定单词。如果单词出错,我会在文件中写入。我使用了SpellChecker类,这是我的代码:

CREATE TABLE groups (
    id integer NOT NULL,
    tempref character varying(255) DEFAULT NULL::character varying,
    prorated_basis boolean NOT NULL,
    fixed_price_amount double precision,
    is_indexed boolean,
    pricing_grid pricing[],
    label character varying(255) NOT NULL
);

CREATE SEQUENCE groups
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER SEQUENCE groups_id_seq OWNED BY groups.id;

ALTER TABLE ONLY pricing_groups ALTER COLUMN id SET DEFAULT nextval('groups_id_seq'::regclass);

ALTER TABLE ONLY groups
    ADD CONSTRAINT groups_pkey PRIMARY KEY (id);

但是在同一个词上,如果我设置List(带有单词)或只有一个单词,它就可以使用不同的单词。 在进程调试中,我看到,CheckWord在一种情况下给我真实,在另一种情况下为false。但我确定这是一个字。

public class SpellChecker : IDisposable
{
    System.Type TWord = null; object com_app = null;

    private static SpellChecker Checker = new SpellChecker();
    private SpellChecker()
    {
        try
        {
            TWord = Type.GetTypeFromProgID("Word.Application");
            com_app = Activator.CreateInstance(TWord);
        }
        catch { com_app = null; }
    }

    public static SpellChecker GetChecker() { return Checker; }
    public void Dispose()
    {
        if (com_app != null)
        {
            object[] arg = { null, null, null };
            TWord.InvokeMember("Quit", BindingFlags.InvokeMethod,
                null, com_app, arg);
            com_app = null;
        }
    }
    public bool CheckWord(string word)
    {
        object[] arg = { word };
        return (bool)TWord.InvokeMember("CheckSpelling",
            BindingFlags.InvokeMethod, null, com_app, arg);
    }
}

1 个答案:

答案 0 :(得分:0)

我意识到了。在某些情况下,CheckWord给我错误的答案。例如,我需要检查俄语和英语单词。如果我给List list = List(){“GSM \ MPG4 \ LTE”,“Привет”},那么在列表中的第一个单词上它称为true,但第二个单词将为false。