0

我不知道如何将粗体和斜体字与普通字分开。

任何人都可以建议如何使用 C# 识别粗体和斜体字吗?

这是我到目前为止所拥有的:

foreach (Word.Paragraph objparagraph in document.Paragraphs)
{
    string sLine = objparagraph.Range.Text;
    if (sLine.Contains(Font.Bold && Font.Italic))
    { 

    }
}
4

1 回答 1

0

首先,我无法测试这段代码,所以我不保证它会起作用!我提供了这个,但想提前说明我的答案是 AFAIK!

也就是说,您当前正在执行的操作将不起作用,因为您正在将Paragraph对象(包含所需的粗体和斜体信息)转换为字符串对象(包含粗体或斜体信息。也就是说,您正在丢失在你有机会测试它是否存在之前的粗体/斜体信息!而不是使用 .Range.Text 属性,你只想使用 .Range 属性。代码看起来像这样:

foreach (Word.Paragraph objparagraph in document.Paragraphs)
{
    int TRUE_CODE = 1;     // I do NOT know if this is correct, it could be another number!

    Range rWords = objparagraph.Range.Text;
    foreach (Range word in rWords.Words
        if (word.Bold == TRUE_CODE)
        { 
             // handle bold case
        }
        if (word.Italic == TRUE_CODE)
             // handle italic case
        }
    }
}

由于我没有测试过这段代码,请注意它可能需要调整才能使其正确。特别是,您会认为 word.Bold 和 word.Italic 会返回 true 或 false,但它们不会。相反,它们返回一个整数,代表三件事之一。

true - the word is bold (or italic)
false - the word is _not_ bold (or italic)
wdUndefined - the word is something else (combination, etc.)

(有关此文档,请参阅下面的链接)问题是,我不知道每个类别的整数。在上面的代码片段中,我假设 1 映射为 true,但这可能不正确!希望这足以让你开始。快乐编码!

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.range.bold.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

于 2013-03-09T04:57:28.343 回答