Word文件解析器

时间:2013-11-24 17:56:48

标签: c# parsing pattern-matching office-interop string-matching

我正在进行可视化编程的学生级项目,其中包括阅读Word文件并从中提取个人信息Name,Age,GPA and other attributes of course (but I will discuss few just for the sake of simplicity)

我遇到的问题是我如何找到Name在Word文件中的位置以及名称后面可能是GPA or AGE的内容。

e.g

  

姓名:朱丽叶年龄:23​​岁

当然,在找到名字后的Age后,我会很容易找到实际的名字。因为它位于NameAge之间。

我的想法直到实现这一点,使用Enum,它将具有Name, Age, Gpa等所有属性。

Enum{
  Name, Age, Enum
}

如果你有一些想法,请建议我吗?

1 个答案:

答案 0 :(得分:0)

因为这是一堂课我只能给你一般指导;我希望你觉得它很有帮助。

首先,使用Enum表示数据存在一些问题。通常,您需要在统一数据类型上使用Enum来表示一组相关数据。例如,规范示例类似于:

enum DayOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } 

在此示例中,基础数据类型相同。也就是说,我们将使用所有整数(例如)来表示基础信息。这一点的重点在于您可以在应用程序中使用描述性类型而不是底层基本类型。例如,您可以说:

if (today == DayOfWeek.Monday) 

等等。

您要做的是创建一个可以为数据建模的新对象,然后填充该数据。在您的示例中,我将从以下内容开始:

class Person
{
    private string name;
    private int    age;
    private double  gpa;

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }

    public int Age
    {
        get
        {
            return age;
        }
        set
        {
            age = value;
        }
    }

    public double Gpa
    {
        get
        {
            return gpa;
        }
        set
        {
            gpa = value;
        }
    }
}

您的总体计划是迭代数据源并逐步构建对象。例如:

List<Person> people = new List<Person>();

// replace conditions with the conditions for your loop.
// this just loops forever.
for (; ; )
{
    Person p = new Person();

    // replace this with code that fetches out the actual values.
    p.Age = 20;
    p.Gpa = 4.0;
    p.Name = "John Doe";

    people.Add(p);

 }

希望这有帮助!